我在 UWP 中写入串行设备时遇到问题。我写入端口的任务如下所示:
public async Task WriteAsync(byte[] stream)
{
if (stream.Length > 0 && serialDevice != null)
{
await writeSemaphore.WaitAsync();
try
{
DataWriter dataWriter = new DataWriter(serialDevice.OutputStream);
dataWriter.WriteBytes(stream);
await dataWriter.StoreAsync();
dataWriter.DetachStream();
dataWriter = null;
}
finally
{
writeSemaphore.Release();
}
}
}
代码在我调用此函数的前两次正常工作。我第三次在await dataWriter.StoreAsync()行中的 ntdll.dll 中得到未处理的异常。
我能看到的完整例外是:
xx.exe 中 0x00007FFCB3FCB2C0 (ntdll.dll) 处的未处理异常:0xC000000D:向服务或函数传递了无效参数。
这个答案提到了一个关闭输入流的垃圾收集器,但是我不明白为什么它会在我的代码中发生。任何帮助了解此问题的底部将不胜感激!