static SerialPort port = new SerialPort("COM3", 57600, Parity.None, 8, StopBits.One);
thread1()
{
lock(port)
for(;;)
port.write"Hi 1";
}
thread2()
{
lock(port)
for(;;)
port.write"Hi 2"
}
вывод: (в Гипертерминале)
Hi 1
Hi 1
Hi 1
здесь, поскольку thread1 заблокирован и находится в бесконечном цикле, таким образом, не выход thread1 вообще.. но мне нужны thread1 и thread2 для печати одновременно.. Выручите меня.
Спасибо.
Ну, они не могут печатать одновременно, если они используют один и тот же порт... но вы возможно имеете в виду следующее:
void Thread1()
{
for(;;)
{
lock (port)
{
port.Write("Hi 1");
}
}
}
void Thread2()
{
for(;;)
{
lock (port)
{
port.Write("Hi 2");
}
}
}
Здесь мы получаем блокировку только на время записи - поэтому есть шанс, что другой поток придет и получит блокировку после того, как мы ее освободим.
Два момента:
SerialPort
может заблокировать свой монитор.