写入STDOUT挂起

时间:2016-08-05 22:16:54

标签: .net windows winapi

我在.NET中编写了一个简单的实用程序,它从串行端口读取并将数据写入控制台。但是,我注意到在很短的时间后,对Console.Write的调用无限期地挂起。我切换到P / Invoking WriteFile,但遇到了同样的问题。

显示数据的代码:

private static void DisplayData(byte[] data, int length)
{
    int written;
     IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    bool success = WriteFile(stdHandle, data, length, out written, IntPtr.Zero);
}

在挂起的呼叫时,要写入的数据是 "$GPGGA,,,,,,0,,,,M,,M,,*66\r\n$GPGNS,,,,,,N,,,,,,,U*7A\r\n$GPVTG,,T,,M,,N,,K,N*2C\r\n$GPRMC,,V,,,,,,,,,,N,U*2A\r\n$GPGSA,M,1,,,,,,,,,,,,,,,,1*0F\r\n$GPGST,,,,,,,,*57\r\n"

与长度(0x9D字节)相比,我已经检查过以确保缓冲区足够大(0x1000字节)。我不确定为什么对WriteFile的调用会挂起这么简单的写操作。

0 个答案:

没有答案