描述:在一个模态窗口中有两个BUTTON(B1与B2)和一个EDITBOX
StarServer()中有两个线程,都是死循环,无出口
期望:通过点击B1调用StarServer函数,启动服务
点击B2停止服务,服务期间输出信息到EDITBOX
我的问题:
1、我在B1 的CLICK事件中调用StarServer()后,程序呈死机状,无输出信息
2、B2的CLICK事件不会写,如何终止在运行的线程?
3、启动服务后,即使关闭模态窗口,服务仍运行,如何实现?服务的启动与终止是否得在用上投递消息?StarServer()
{
HANDLE thread[2];
DWORD threadsid,threadrid;
thread[0]=CreateThread(NULL,0,th1,NULL,0,&threadrid);
if(thread[0]==NULL)
{
outputInfo("启动th1线程失败!");
return;
}
thread[1]=CreateThread(NULL,0,th2,NULL,0,&threadsid);
if(thread[1]==NULL)
{
outputInfo("启动th2线程失败!");
return;
}
WaitForMultipleObjects(2,thread,FALSE,INFINITE);CloseHandle(thread[0]);
CloseHandle(thread[1])
}
StarServer()中有两个线程,都是死循环,无出口
期望:通过点击B1调用StarServer函数,启动服务
点击B2停止服务,服务期间输出信息到EDITBOX
我的问题:
1、我在B1 的CLICK事件中调用StarServer()后,程序呈死机状,无输出信息
2、B2的CLICK事件不会写,如何终止在运行的线程?
3、启动服务后,即使关闭模态窗口,服务仍运行,如何实现?服务的启动与终止是否得在用上投递消息?StarServer()
{
HANDLE thread[2];
DWORD threadsid,threadrid;
thread[0]=CreateThread(NULL,0,th1,NULL,0,&threadrid);
if(thread[0]==NULL)
{
outputInfo("启动th1线程失败!");
return;
}
thread[1]=CreateThread(NULL,0,th2,NULL,0,&threadsid);
if(thread[1]==NULL)
{
outputInfo("启动th2线程失败!");
return;
}
WaitForMultipleObjects(2,thread,FALSE,INFINITE);CloseHandle(thread[0]);
CloseHandle(thread[1])
}
我的问题,你能指点一二吗?
WaitForMultipleObjects(2,thread,FALSE,INFINITE);CloseHandle(thread[0]);
CloseHandle(thread[1])
在thread中加入
WaitForSingleObjects()
{
return
}
然后button2发送线程中wait的事件。
BOOL g_bStop = TRUE;
StarServer()
{
g_bStop = FASLE;
DWORD threadsid,threadrid;
g_thread[0]=CreateThread(NULL,0,th1,NULL,0,&threadrid);
if(g_thread[0]==NULL)
{
outputInfo("启动th1线程失败!");
return;
}
g_thread[1]=CreateThread(NULL,0,th2,NULL,0,&threadsid);
if(g_thread[1]==NULL)
{
outputInfo("启动th2线程失败!");
return;
}
}StopServer()
{
g_bStop = TRUE;
WaitForMultipleObjects(2,g_thread,FALSE,INFINITE);CloseHandle(g_thread[0]);
CloseHandle(g_thread[1])g_thread[0] = g_thread[1] = NULL;}
按你的方法,出如下错误:
arpTest.exe 中的 0x7c22e26c (mfc71d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 。