用什么函数比较好?谢谢
17 个解决方案
#1
CWinThread* m_pThreadCheck;
m_pThreadCheck = AfxBeginThread(ThreadExcelExchange, this, THREAD_PRIORITY_BELOW_NORMAL);
if (m_pThreadCheck != NULL)
{
WaitForSingleObject(m_pThreadCheck->m_hThread, INFINITE);
}
#2
如果存在窗口,在响应窗口关闭 WM_CLOSE 的时候,检查这个线程是否已经关闭。
#3
用WaitForSingleObject等待线程句柄就行了。
#4
WaitForSingleObject()等待线程句柄,主线程中放一个while(true)的死循环,然后里面WaitForSingleObject等待,当等到了,就break退出循环,同时退出主线程
#5
WaitForSingleObject函数监视该线程 当线程执行完即关闭时候 线程句柄有非信号太转变为信号太 等待完毕OK
#6
二楼正解
#7
同 步
#8
INFINITE=》时间不是要等待很久
#9
WaitForSingleObject等待线程执行完毕,句柄有信号状态。
#10
一般都是用WaitForSingleObject来完成,等待句柄信号量的信号。。
#11
INFINITE=》时间不是要等待很久?
INFINITE,是无限长, 一直要等到子线程结束,有信号量为止.
INFINITE,是无限长, 一直要等到子线程结束,有信号量为止.
#12
谢谢
#13
INFINITE 可以设置5秒?
#14
设置退出的信号量 SetEvents
在WM_CLOSE消息进行判断,退出信号有效,则退出
在WM_CLOSE消息进行判断,退出信号有效,则退出
#15
要是 子线程只运行5秒,10秒就结束呢?
#16
如果参数是INFINITE, 线程运行10秒结束, 此时 m_pThreadCheck->m_hThread 置为有信号量,
WaitForSingleObject等到信号量了, 所以返回, 程序继续往下执行.
如果参数是5000(毫秒), 线程运行10秒结束, 那么WaitForSingleObject等到5秒时,没有信号量,
WaitForSingleObject也会返回,继续往下执行.(也就是说,子线程没有结束, 主线程就往下执行了.)
多看看MSDN ,上网搜索, 答得真累
WaitForSingleObject等到信号量了, 所以返回, 程序继续往下执行.
如果参数是5000(毫秒), 线程运行10秒结束, 那么WaitForSingleObject等到5秒时,没有信号量,
WaitForSingleObject也会返回,继续往下执行.(也就是说,子线程没有结束, 主线程就往下执行了.)
多看看MSDN ,上网搜索, 答得真累
#17
谢谢
#1
CWinThread* m_pThreadCheck;
m_pThreadCheck = AfxBeginThread(ThreadExcelExchange, this, THREAD_PRIORITY_BELOW_NORMAL);
if (m_pThreadCheck != NULL)
{
WaitForSingleObject(m_pThreadCheck->m_hThread, INFINITE);
}
#2
如果存在窗口,在响应窗口关闭 WM_CLOSE 的时候,检查这个线程是否已经关闭。
#3
用WaitForSingleObject等待线程句柄就行了。
#4
WaitForSingleObject()等待线程句柄,主线程中放一个while(true)的死循环,然后里面WaitForSingleObject等待,当等到了,就break退出循环,同时退出主线程
#5
WaitForSingleObject函数监视该线程 当线程执行完即关闭时候 线程句柄有非信号太转变为信号太 等待完毕OK
#6
二楼正解
#7
同 步
#8
INFINITE=》时间不是要等待很久
#9
WaitForSingleObject等待线程执行完毕,句柄有信号状态。
#10
一般都是用WaitForSingleObject来完成,等待句柄信号量的信号。。
#11
INFINITE=》时间不是要等待很久?
INFINITE,是无限长, 一直要等到子线程结束,有信号量为止.
INFINITE,是无限长, 一直要等到子线程结束,有信号量为止.
#12
谢谢
#13
INFINITE 可以设置5秒?
#14
设置退出的信号量 SetEvents
在WM_CLOSE消息进行判断,退出信号有效,则退出
在WM_CLOSE消息进行判断,退出信号有效,则退出
#15
要是 子线程只运行5秒,10秒就结束呢?
#16
如果参数是INFINITE, 线程运行10秒结束, 此时 m_pThreadCheck->m_hThread 置为有信号量,
WaitForSingleObject等到信号量了, 所以返回, 程序继续往下执行.
如果参数是5000(毫秒), 线程运行10秒结束, 那么WaitForSingleObject等到5秒时,没有信号量,
WaitForSingleObject也会返回,继续往下执行.(也就是说,子线程没有结束, 主线程就往下执行了.)
多看看MSDN ,上网搜索, 答得真累
WaitForSingleObject等到信号量了, 所以返回, 程序继续往下执行.
如果参数是5000(毫秒), 线程运行10秒结束, 那么WaitForSingleObject等到5秒时,没有信号量,
WaitForSingleObject也会返回,继续往下执行.(也就是说,子线程没有结束, 主线程就往下执行了.)
多看看MSDN ,上网搜索, 答得真累
#17
谢谢