Mik*_*ike 18 .net c# serial-port
在我的应用程序中,我使用.NET SerialPort类来读取和写入数据.使用DataReceived事件完成读取,我假设在ThreadPool线程内部.写作由UI线程(WinForms)完成.
我想知道,如果有必要同步对SerialPort实例的访问,那么不会同时发生读/写.我的良心告诉我,我应该锁定这些调用,但我很困惑,因为我在互联网上找到的所有C#SerialPort示例根本不使用锁定.
这是关于该主题的一个很棒的主题,SerialPort类的作者参与其中:
MSDN:SerialPort如何处理DataReceived?
根据我的经验,我已经编写了十几个串行通信应用程序用作硬件模拟器,我没有锁定.我当时不知道我是否安全,但在实践中,我还没有错误.(每年按20个+测试和自动化测试机附近持续使用)这就是说,我的应用程序不离开公司,如果我写了大众消费,我可能需要更多的关注应用程序.
从文档:
此类型 (SerialPort) 的任何公共静态(在 Visual Basic 中共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。
所以你应该明确地用锁同步你的读/写。