19 个解决方案
#1
ExitProcess
应该可以吧。
应该可以吧。
#2
ExitProcess
The ExitProcess function ends a process and all its threads.
void ExitProcess(
UINT uExitCode
);
Parameters
uExitCode
[in] Exit code for the process and all threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
This function does not return a value.
更详细的查MSDN吧。
The ExitProcess function ends a process and all its threads.
void ExitProcess(
UINT uExitCode
);
Parameters
uExitCode
[in] Exit code for the process and all threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
This function does not return a value.
更详细的查MSDN吧。
#3
用TerminateThread()也不行么?
#4
有什么线程死锁了,没结束?
#5
ExitProcess
#6
一定是有工作(或界面)线程没结束, 主进程(线程)就结束, 导至...
试着在ExitInstance时候等待其它线程结束...
试着在ExitInstance时候等待其它线程结束...
#7
最近在做一个通讯项目。出现了没有想到的问题,关闭主窗体后进程还在任务管理器中,我知道是资源没有完全释放.我想知道有没有什么办法可以结束进程.?希望高人帮助,不胜感激.!
赫赫,我前几天遇到了同样的问题,而且我的进程怎么也结束不掉,只能重新启动计算机。我是这么解决的,因为是多线程程序,一个线程等待接收命令,一个线程采集数据并发送,同时写sql server,我仔细检查了线程,发现是采集线程没有彻底退出,我在线程里加了若干检查退出判断就好了。
祝你顺利。
赫赫,我前几天遇到了同样的问题,而且我的进程怎么也结束不掉,只能重新启动计算机。我是这么解决的,因为是多线程程序,一个线程等待接收命令,一个线程采集数据并发送,同时写sql server,我仔细检查了线程,发现是采集线程没有彻底退出,我在线程里加了若干检查退出判断就好了。
祝你顺利。
#8
楼上说的极是
#9
我想是因为我的CSOCKET结束程序后还有部分资源在使用,我使用了closesocket(m_sGate);但在后面如果再加上一句WSACleanup()则程序关闭时进程是销亡了.但程序报错.我试着删掉WSACleanup(),然后
void CTEXTDlg::OnClose()
{
ExitProcess(0);--->加上这句.程序关闭时依然会报错。
CDialog::OnClose();
}
我没用过TerminateThread()不知道该怎么用。现在只能删除WSACleanup(),然后在任务管理器中强行关闭.不知道有什么办法可以解决啊?
void CTEXTDlg::OnClose()
{
ExitProcess(0);--->加上这句.程序关闭时依然会报错。
CDialog::OnClose();
}
我没用过TerminateThread()不知道该怎么用。现在只能删除WSACleanup(),然后在任务管理器中强行关闭.不知道有什么办法可以解决啊?
#10
報什麼錯啊,樓主說得清楚一點.
#11
关注啊~~~~~~~~~~~~
我的也是主线程关闭在OnDestroy()里对退出线程的全局变量进行赋值,可是等到主线程都结束了,工作线程就不知道停到哪里了~~~~~~~
有这种情况发生时就出异常...
困扰我好久了!
我的也是主线程关闭在OnDestroy()里对退出线程的全局变量进行赋值,可是等到主线程都结束了,工作线程就不知道停到哪里了~~~~~~~
有这种情况发生时就出异常...
困扰我好久了!
#12
楼上,
在OnDestroy()里对全局变量赋值(这个供退出的全局变量最好设置成 volatile 类型),然后检查 工作线程结束 后, 或等待一段时间后强制关闭工作线程(等待时间内检查是否结束),再退出。
楼主参考。
在OnDestroy()里对全局变量赋值(这个供退出的全局变量最好设置成 volatile 类型),然后检查 工作线程结束 后, 或等待一段时间后强制关闭工作线程(等待时间内检查是否结束),再退出。
楼主参考。
#13
肯定是子线程还在运行,导致主界面关闭后,还在等待子线程结束或超时。
#14
一般来说主线程关闭后,子线程不也跟着退出吗?
#15
用TerminateThread()????????
应该在所有线程检测一个退出标志,当标志更改时退出,
应该在所有线程检测一个退出标志,当标志更改时退出,
#16
线程中一定要加入结束的标志。不控制线程的肯定不会自己退出。另外主窗口关闭了并不代表你的程序已经结束了,如果程序结束,不会留下一个线程。
#17
在主线程结束时通知工作线程让他自己退出。
#18
WaitForSingleObject(线程句柄,,时间)这个函数好像是这样
#19
主线程要等待所有的工作线程结束后,再Terminate.
#20
#1
ExitProcess
应该可以吧。
应该可以吧。
#2
ExitProcess
The ExitProcess function ends a process and all its threads.
void ExitProcess(
UINT uExitCode
);
Parameters
uExitCode
[in] Exit code for the process and all threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
This function does not return a value.
更详细的查MSDN吧。
The ExitProcess function ends a process and all its threads.
void ExitProcess(
UINT uExitCode
);
Parameters
uExitCode
[in] Exit code for the process and all threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
This function does not return a value.
更详细的查MSDN吧。
#3
用TerminateThread()也不行么?
#4
有什么线程死锁了,没结束?
#5
ExitProcess
#6
一定是有工作(或界面)线程没结束, 主进程(线程)就结束, 导至...
试着在ExitInstance时候等待其它线程结束...
试着在ExitInstance时候等待其它线程结束...
#7
最近在做一个通讯项目。出现了没有想到的问题,关闭主窗体后进程还在任务管理器中,我知道是资源没有完全释放.我想知道有没有什么办法可以结束进程.?希望高人帮助,不胜感激.!
赫赫,我前几天遇到了同样的问题,而且我的进程怎么也结束不掉,只能重新启动计算机。我是这么解决的,因为是多线程程序,一个线程等待接收命令,一个线程采集数据并发送,同时写sql server,我仔细检查了线程,发现是采集线程没有彻底退出,我在线程里加了若干检查退出判断就好了。
祝你顺利。
赫赫,我前几天遇到了同样的问题,而且我的进程怎么也结束不掉,只能重新启动计算机。我是这么解决的,因为是多线程程序,一个线程等待接收命令,一个线程采集数据并发送,同时写sql server,我仔细检查了线程,发现是采集线程没有彻底退出,我在线程里加了若干检查退出判断就好了。
祝你顺利。
#8
楼上说的极是
#9
我想是因为我的CSOCKET结束程序后还有部分资源在使用,我使用了closesocket(m_sGate);但在后面如果再加上一句WSACleanup()则程序关闭时进程是销亡了.但程序报错.我试着删掉WSACleanup(),然后
void CTEXTDlg::OnClose()
{
ExitProcess(0);--->加上这句.程序关闭时依然会报错。
CDialog::OnClose();
}
我没用过TerminateThread()不知道该怎么用。现在只能删除WSACleanup(),然后在任务管理器中强行关闭.不知道有什么办法可以解决啊?
void CTEXTDlg::OnClose()
{
ExitProcess(0);--->加上这句.程序关闭时依然会报错。
CDialog::OnClose();
}
我没用过TerminateThread()不知道该怎么用。现在只能删除WSACleanup(),然后在任务管理器中强行关闭.不知道有什么办法可以解决啊?
#10
報什麼錯啊,樓主說得清楚一點.
#11
关注啊~~~~~~~~~~~~
我的也是主线程关闭在OnDestroy()里对退出线程的全局变量进行赋值,可是等到主线程都结束了,工作线程就不知道停到哪里了~~~~~~~
有这种情况发生时就出异常...
困扰我好久了!
我的也是主线程关闭在OnDestroy()里对退出线程的全局变量进行赋值,可是等到主线程都结束了,工作线程就不知道停到哪里了~~~~~~~
有这种情况发生时就出异常...
困扰我好久了!
#12
楼上,
在OnDestroy()里对全局变量赋值(这个供退出的全局变量最好设置成 volatile 类型),然后检查 工作线程结束 后, 或等待一段时间后强制关闭工作线程(等待时间内检查是否结束),再退出。
楼主参考。
在OnDestroy()里对全局变量赋值(这个供退出的全局变量最好设置成 volatile 类型),然后检查 工作线程结束 后, 或等待一段时间后强制关闭工作线程(等待时间内检查是否结束),再退出。
楼主参考。
#13
肯定是子线程还在运行,导致主界面关闭后,还在等待子线程结束或超时。
#14
一般来说主线程关闭后,子线程不也跟着退出吗?
#15
用TerminateThread()????????
应该在所有线程检测一个退出标志,当标志更改时退出,
应该在所有线程检测一个退出标志,当标志更改时退出,
#16
线程中一定要加入结束的标志。不控制线程的肯定不会自己退出。另外主窗口关闭了并不代表你的程序已经结束了,如果程序结束,不会留下一个线程。
#17
在主线程结束时通知工作线程让他自己退出。
#18
WaitForSingleObject(线程句柄,,时间)这个函数好像是这样
#19
主线程要等待所有的工作线程结束后,再Terminate.