MFC无法结束线程

qq_25193635 2016-10-19 11:09:05
具体是这样的, 在按钮点击结束线程是可以的,
但是如果在别的源文件调用就不行了 ,比如A.cpp 写了一个关闭全部线程的函数 , 点击按钮是可以关闭的
我发现如果别的源文件调用开始线程的函数, 在按钮那边也不能结束了,
或者按钮点了开始多线程, B.cpp调用A.cpp的结束线程函数也会失效

我把A.cpp的函数写成类成员, B.cpp调用也不能结束

.....简单的说就是多线程开始和结束的函数都写在A.cpp, 如果A开始的话, B不能结束, B开始的话, A也不能结束

A.cpp的
DWORD CMainDialogWnd::开始脚本()
{
Thread11 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程11, NULL, NULL, NULL);
Thread12 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程12, NULL, NULL, NULL);
Thread13 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程13, NULL, NULL, NULL);
Thread14 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程14, NULL, NULL, NULL);
Thread15 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程15, NULL, NULL, NULL);
Thread16 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程16, NULL, NULL, NULL);
return 1;
}
DWORD CMainDialogWnd ::Stop()
{
TerminateThread(Thread11, 1); TerminateThread(Thread14, 1);
TerminateThread(Thread12, 1); TerminateThread(Thread15, 1);
TerminateThread(Thread13, 1); TerminateThread(Thread16, 1);
return 1;
}
// =================================================================================
B.cpp的 :
BOOL __Clear()
{
CMainDialogWnd aa;
aa.Stop();
return TRUE;
}

有错误吗, 就是A开始线程A能停止, 但是B不能调用它停止.....
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25193635 2016-10-20
  • 打赏
  • 举报
回复
TerminateThread第二个参数改成0就好了没人回答, 等会把分分给前面几个随便回答的大大吧
boylafong 2016-10-20
  • 打赏
  • 举报
回复
TerminateThread函数是异步运行的函数,它告诉系统你想要线程终止运行,但当函数返回时,不能保证线程被撤消。 如果需要确切地知道该线程已经终止运行,必须调用WaitForSingleObject或者类似的函数,传递线程的句柄

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧