簡體   English   中英

是否有必要同步.NET SerialPort寫入/讀取?

[英]Is it necessary to synchronize .NET SerialPort writes/reads?

在我的應用程序中,我使用.NET SerialPort類來讀取和寫入數據。 使用DataReceived事件完成讀取,我假設在ThreadPool線程內部。 寫作由UI線程(WinForms)完成。

我想知道,如果有必要同步對SerialPort實例的訪問,那么不會同時發生讀/寫。 我的良心告訴我,我應該鎖定這些調用,但我很困惑,因為我在互聯網上找到的所有C#SerialPort示例根本不使用鎖定。

這是關於該主題的一個很棒的主題,SerialPort類的作者參與其中:

MSDN:SerialPort如何處理DataReceived?

根據我的經驗,我已經編寫了十幾個串行通信應用程序用作硬件模擬器,我沒有鎖定。 我當時不知道我是否安全,但在實踐中,我還沒有錯誤。 (20多個測試人員和自動測試機器幾乎不斷使用的一年)這就是說,我的應用程序不會離開公司,如果我正在為公共消費編寫應用程序,我可能會更加小心。

從文檔:

此類型的任何公共靜態(在Visual Basic中為Shared)成員(SerialPort)都是線程安全的。 任何實例成員都不保證是線程安全的。

所以你應該用鎖來確定你的讀/寫同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM