点击一个按钮,关闭一个线程,获得线程值才继续执行,怎么处理
求助:点击一个按钮,关闭一个线程,获得线程值才继续执行,怎么办?
MFC开发的控件实现自动语音报警和语音对讲
控件中创建了一个对话框来显示视频和语音对讲,创建一个自动语音报警线程用来发送自动报警语音
由于自动语音报警和语音对讲独占音频通道。
如果正在自动语音报警的时候,点击语音对讲,必须关闭线程释放音频通道才能实现语音对讲。
我现在是做法是:点击语音对讲,给控件主程序一个值,去控制关闭线程,然后用while()等待返回值,但是发现主程序一直停留在while()哪里
大家帮帮忙啊
------解决方案--------------------
你线程函数中怎么写的?
------解决方案--------------------
那你就检查一下你那个线程为什么没有退出呗
------解决方案--------------------
线程中增加一个标志位来判断是否退出循环。点击按钮的时候修改这个标志位值来通知线程退出与否
------解决方案--------------------
建立一个线程时会返回一个句柄,通过这个句柄你控制线程的运行暂停继续的功能.你可以建立一个全局变量,这个全局变量是在类外面定义(不是类里的全局变量),这样在while里你就可以这么改了:
BOOL m_Stop=TRUE;//批示线程运行状态
线程函数:
while(m_Stop)
{
}
按钮函数:
m_Stop=TRUE;//如果继续
m_ThreadHandle.Resume();//线程的继续函数,函数名可能不对,但类似m_ThreadHandle是返回的线程的句柄
m_Stop=FALSE;//如果暂停
m_ThreadHandle.Start();//启动线程
------解决方案--------------------
WaitForSingleObject,等待线程句柄
------解决方案--------------------
跟踪下看看为什么线程没有退出 再者用WaitForSingleObject等待啊,可以设定timeout
------解决方案--------------------
------解决方案--------------------
while会一直占用CPU,里面必须要有Sleep CPU才有机会去做你想要完成的事情
------解决方案--------------------
利用互斥线程,音频通道相当于共享资源
MFC开发的控件实现自动语音报警和语音对讲
控件中创建了一个对话框来显示视频和语音对讲,创建一个自动语音报警线程用来发送自动报警语音
由于自动语音报警和语音对讲独占音频通道。
如果正在自动语音报警的时候,点击语音对讲,必须关闭线程释放音频通道才能实现语音对讲。
我现在是做法是:点击语音对讲,给控件主程序一个值,去控制关闭线程,然后用while()等待返回值,但是发现主程序一直停留在while()哪里
大家帮帮忙啊
------解决方案--------------------
你线程函数中怎么写的?
------解决方案--------------------
那你就检查一下你那个线程为什么没有退出呗
------解决方案--------------------
线程中增加一个标志位来判断是否退出循环。点击按钮的时候修改这个标志位值来通知线程退出与否
------解决方案--------------------
建立一个线程时会返回一个句柄,通过这个句柄你控制线程的运行暂停继续的功能.你可以建立一个全局变量,这个全局变量是在类外面定义(不是类里的全局变量),这样在while里你就可以这么改了:
BOOL m_Stop=TRUE;//批示线程运行状态
线程函数:
while(m_Stop)
{
}
按钮函数:
m_Stop=TRUE;//如果继续
m_ThreadHandle.Resume();//线程的继续函数,函数名可能不对,但类似m_ThreadHandle是返回的线程的句柄
m_Stop=FALSE;//如果暂停
m_ThreadHandle.Start();//启动线程
------解决方案--------------------
WaitForSingleObject,等待线程句柄
------解决方案--------------------
跟踪下看看为什么线程没有退出 再者用WaitForSingleObject等待啊,可以设定timeout
------解决方案--------------------
------解决方案--------------------
while会一直占用CPU,里面必须要有Sleep CPU才有机会去做你想要完成的事情
------解决方案--------------------
利用互斥线程,音频通道相当于共享资源