シリアルポートから、一定間隔でデータを送信するプログラムをC#で記述しています。
下記のようにSerialPort.Writeでデータの送信を開始すると、プロセスメモリが上限なく増えていきます。
これはアセンブリ「System.IO.Ports.dll」に依存する問題でしょうか?
C#
1using System.IO.Ports 2 3private void SendButton_Click(object sender, EventArgs e) 4{ 5 if (serialPort1.IsOpen == false) 6 { 7 return; 8 } 9 10 try 11 { 12 LoopSend(); 13 } 14 catch (Exception ex) 15 { 16 MessageBox.Show(ex.Message); 17 } 18} 19 20private async void LoopSend() 21{ 22 while (true) 23 { 24 await Task.Delay(100); 25 serialPort1.Write("T"); 26 } 27}
クラス「SerialDataReceivedEventArgs」のイベント「DataReceived」を利用した場合も、同様にプロセスメモリが増えているようです。
送受信の際にプロセスメモリを増やさず、処理を行いたいです。
ポート設定は下記で送受信を行い、いくつか他の設定でも試しましたが、結果は同じでした。
ボーレート:9600
データビット:8
パリティビット:Odd
ストップビット:1
フロー制御:None
解決方法がわからないため,ご教授いただければ幸いです。
よろしくお願いいたします。
【環境】
OS:Windows 10 Home 21H2
.NET Framework:4.8
開発環境:Visual Studio 2019
回答1件
あなたの回答
tips
プレビュー