0

我正在用 c# 编码。如果两个线程正在写入同一个串行端口,是否会发生冲突?如果是,我该如何处理?另外,我想优先考虑其中一个线程。

例如,如果两个线程正在写入串行端口,那么当我从线程 2 写入数据时,我想停止线程 1 的传输(即,在写入端口时,线程 2 的优先级高于线程 1)。


非常感谢您的回答。但我的一个问题仍未得到解答。一旦我从线程 1 获得要写入的数据。它应该暂停从其他线程读取/写入并传输此数据,然后继续暂停功能。

4

1 回答 1

0

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);
    }
}
于 2012-04-15T13:32:35.007 回答