我正在用 c# 编码。如果两个线程正在写入同一个串行端口,是否会发生冲突?如果是,我该如何处理?另外,我想优先考虑其中一个线程。
例如,如果两个线程正在写入串行端口,那么当我从线程 2 写入数据时,我想停止线程 1 的传输(即,在写入端口时,线程 2 的优先级高于线程 1)。
非常感谢您的回答。但我的一个问题仍未得到解答。一旦我从线程 1 获得要写入的数据。它应该暂停从其他线程读取/写入并传输此数据,然后继续暂停功能。
我正在用 c# 编码。如果两个线程正在写入同一个串行端口,是否会发生冲突?如果是,我该如何处理?另外,我想优先考虑其中一个线程。
例如,如果两个线程正在写入串行端口,那么当我从线程 2 写入数据时,我想停止线程 1 的传输(即,在写入端口时,线程 2 的优先级高于线程 1)。
非常感谢您的回答。但我的一个问题仍未得到解答。一旦我从线程 1 获得要写入的数据。它应该暂停从其他线程读取/写入并传输此数据,然后继续暂停功能。
msdn 文档告诉:
“线程安全这种类型的任何公共静态(在 Visual Basic 中共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。” - http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
所以你需要自己让它线程安全。例如
void thread1()
{
lock(serialPort1)
{
serialPort1.Write(something);
}
}
void thread2()
{
lock(serialPort1)
{
serialPort1.Write(somethingelse);
}
}