描述:
我写了一个ActiveX组件.用来操作com口的,使用了多线程序.把他编译成ocx后,在delphi或vb中使用他.在一个窗体上放两个以上的该ocx控件,发现所有东西只在最后一个控件的线程中执行.有什么办法可以解决呀?
部分代码如下:
void CIRManCtrl::StartIRMan()
{
m_CritSect.Lock();
DWORD dwID;
m_ThreadHandle = CreateThread(NULL,
NULL,
(LPTHREAD_START_ROUTINE)ThreadProc,
(LPVOID)this,
NULL,
&dwID);
SetThreadPriority(m_ThreadHandle, THREAD_PRIORITY_LOWEST);
char m_strPort[6];
sprintf(m_strPort,"COM%d",m_PortNum);
OpenComm(m_strPort,9600,0,8,1);
m_CritSect.Unlock();
}
LONG ThreadProc(LPVOID pParam)
{
CIRManCtrl* IRManCtrl = (CIRManCtrl*)pParam;
keyType keyCode={0, 0};
int EnteredNumber=0;
keyType lastkeyCode={0, 0};
clock_t Alasttime(0);
char* ErrMsg = NULL;
for (;;)
{
lastkeyCode = keyCode;
TCHAR Buffer[25];
sprintf(Buffer, "%s:%d", tmd, GetTickCount());
WriteComm(Buffer,10);
Sleep(2000); //Just in order to save processor time.
}
return TRUE;
}