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();
}
}
}
この関数を呼び出す最初の 2 回は、コードが正常に機能します。3 回目は、 await dataWriter.StoreAsync()行の ntdll.dll で Unhandled Exception が発生しました。
私が見ることができる完全な例外は次のとおりです。
xx.exe の 0x00007FFCB3FCB2C0 (ntdll.dll) で未処理の例外: 0xC000000D: 無効なパラメーターがサービスまたは関数に渡されました。
この回答では、入力ストリームを閉じるガベージ コレクターについて言及していますが、コードでなぜそれが発生するのかわかりません。この問題の根底に到達するための助けをいただければ幸いです。