Hallo, bin noch etwas neu in dieser Materie und hoffe auf eure Hilfe.
Programmiere gerade ein kleines Program was 2 separate Threads enthält.
Einer für die Kommunikation und ein zweiter für die allgemeine Abarbeitung.
Ich kann beide Threads starten und sauber beenden.
Im Thread für die Kommunikation wird eine Variable abgefragt. Wenn Sie "true" ist, soll er einfach einen String senden und die Variable wieder auf "false" setzen.
Der zweite Thread soll nach ablauf einer Zeit die diese auf "true" setzen und den Kommunikationsthread veranllasen zu senden.
Leider funktioniert das nicht so wie es soll. Was mach ich falsch?
Hier der Code:
Programmiere gerade ein kleines Program was 2 separate Threads enthält.
Einer für die Kommunikation und ein zweiter für die allgemeine Abarbeitung.
Ich kann beide Threads starten und sauber beenden.
Im Thread für die Kommunikation wird eine Variable abgefragt. Wenn Sie "true" ist, soll er einfach einen String senden und die Variable wieder auf "false" setzen.
Der zweite Thread soll nach ablauf einer Zeit die diese auf "true" setzen und den Kommunikationsthread veranllasen zu senden.
Leider funktioniert das nicht so wie es soll. Was mach ich falsch?
Hier der Code:
Code:
"Der Timerthread"
protected void TimerLoop()
{
while( !_TimerStopRequest )
{
if(main_serial_rx_tx_thd != null)
{
lock(lockvar)
{
main_serial_rx_tx_thd.SerialTransmitRequest = true;
}
}
Thread.Sleep(500);
}
}
"Funktion zur Veränderung der Variable"
public bool SerialTransmitRequest
{
set { _Start_Serial_Transfer = value; }
}
"Kommunikationsthread"
protected void SerialLoop()
{
while( !_SerialStopRequest )
{
lock(lockvar)
{
if(_Start_Serial_Transfer)
{
serialPort1.Write("Hallo\r");
_Start_Serial_Transfer = false;
}
Thread.Sleep(0);
}
}
serialPort1.Close();
}