15,471
社区成员
发帖
与我相关
我的任务
分享
typedef int(_stdcall *Sms_Connection)(LPCTSTR Sms_Con,int Com_Port,int Com_BaudRate);
Sms_Connection Proc;
Proc = (Sms_Connection)GetProcAddress(hinstDLL,"Sms_Connection");
int iValue = Proc(tmp,3,9600);
if (iValue == 1)
{
AfxMessageBox("success!");
} else if (iValue == 0) {
AfxMessageBox("fail!");
}
[/quote]
从你的代码能看出卡住的位置就应该是“WaitForSingleObject(eventFlag.m_hObject,INFINITE);”造成的。你调用这句的时候是在主线程吧!在主线程的话肯定要把你ui卡死啊。
而且多线程的代码你不能用debug来说事,你调式是会改变程序原来运行的顺序的。其实就是你两个线程没有同步好,导致在主线程中“WaitForSingleObject(eventFlag.m_hObject,INFINITE);”等死了,没有收到另一个线程set的event[/quote]
那我应该这么做比较好呢?谢谢啊 typedef int(_stdcall *Sms_Connection)(LPCTSTR Sms_Con,int Com_Port,int Com_BaudRate);
Sms_Connection Proc;
Proc = (Sms_Connection)GetProcAddress(hinstDLL,"Sms_Connection");
int iValue = Proc(tmp,3,9600);
if (iValue == 1)
{
AfxMessageBox("success!");
} else if (iValue == 0) {
AfxMessageBox("fail!");
}
[/quote]
从你的代码能看出卡住的位置就应该是“WaitForSingleObject(eventFlag.m_hObject,INFINITE);”造成的。你调用这句的时候是在主线程吧!在主线程的话肯定要把你ui卡死啊。
而且多线程的代码你不能用debug来说事,你调式是会改变程序原来运行的顺序的。其实就是你两个线程没有同步好,导致在主线程中“WaitForSingleObject(eventFlag.m_hObject,INFINITE);”等死了,没有收到另一个线程set的event typedef int(_stdcall *Sms_Connection)(LPCTSTR Sms_Con,int Com_Port,int Com_BaudRate);
Sms_Connection Proc;
Proc = (Sms_Connection)GetProcAddress(hinstDLL,"Sms_Connection");
int iValue = Proc(tmp,3,9600);
if (iValue == 1)
{
AfxMessageBox("success!");
} else if (iValue == 0) {
AfxMessageBox("fail!");
}