我对在 Win32 api 中使用线程比较陌生,并且遇到了一个我无法解决的问题。
这是我的问题,我有 4 个线程(它们按预期工作),允许操作员测试 4 个终端。在每个线程中,我都尝试通过 Pass 或 Fail 向主窗口窗体发送消息,这被放置在列表框中。下面是其中一个线程,其余的完全相同。
void Thread1(PVOID pvoid)
{
for(int i=0;i<numberOfTests1;i++) {
int ret;
double TimeOut = 60.0;
int Lng = 1;
test1[i].testNumber = getTestNumber(test1[i].testName);
unsigned char Param[255] = {0};
unsigned char Port1 = port1;
ret = PSB30_Open(Port1, 16);
ret = PSB30_SendOrder (Port1, test1[i].testNumber, &Param[0], &Lng, &TimeOut);
ret = PSB30_Close (Port1);
if(*Param == 1) SendDlgItemMessage(hWnd,IDT_RESULTLIST1,LB_ADDSTRING,i,(LPARAM)"PASS");
else SendDlgItemMessage(hWnd,IDT_RESULTLIST1,LB_ADDSTRING,i,(LPARAM)"FAIL");
}
_endthread();
}
我已经调试了代码,它除了填充列表框之外的所有事情,我假设因为它是一个线程,我错过了一些东西,因为相同的代码与线程一起工作。在将消息发送到主窗口时,我是否需要让线程进入睡眠状态?
任何帮助表示赞赏。
干杯