Win CE设备上的多线程应用程序中的WriteFile问题

时间:2013-06-25 17:25:00

标签: c++ multithreading

我用C ++(ATL)编写了一个ActiveX控件。在ACtiveX Control中,有2个线程,主线程和另一个处理I / O通信的线程。

我调用WriteFile()API来写入后台线程中的串口。当我运行程序并尝试向下发送数据时,没有任何反应。我进入调试模式并在WriteFile()行设置断点。当应用程序到达该断点时,如果我跨过该行,则该操作有效。但是,如果我按F5(在Visual Studio中),则不会发生任何事情,代码将完成执行。

当我把WriteFile放在主线程上时,一切正常。似乎是同步问题。 我目前正在使用Windows CE 5.0设备。

有人能指出我正确的方向来解决这个问题吗?

我的代码看起来像什么的例子 主线:

HANDLE h;
HANDLE thread;
enter code here
int main()
{
     Connection m_connection;
     m_Connection.Open();
}
void Connection::Open() {
    h =  CreateFile(L"COM4:",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    thread = CreateThread(NULL,0,ThreadStart,this,0,NULL);
}
void Connection::Write(string data) {
    DWORD bytesToWrite = data.length();
    DWORD bytesWritten;
    WriteFile(h,data.c_str(),bytesToWrite,&bytesWritten,0);
}
void Backgroundthread()
{
    string data = "Hello";
    Write(data);
}

0 个答案:

没有答案
相关问题