C#使用线程等待多个条件
我正在寻找如何实现以下目标的概念: 我有4个设备通过RS232连接到一台PC,我想在那里创建一些控制应用程序。我已经为处理通信和错误处理的4个不同设备创建了类 在主线程中,我现在想要创建一些初始化序列。例如,一个控制参数是温度。所以我设置了温度,然后需要等待10分钟,直到温度达到。当达到这个值时,我想设置电源的输出电压等等。我需要并行控制一些参数(在等待温度进入可接受的窗口时,我还需要监控压力是否在某个范围内) 因此,我梦想着这样的事情,但不知道如何最好地实现它: 装置1.setTemp(200); magic.Wait(获取当前值的函数,包含最小/最大级别的对象,最大时间) 对于简单的情况。但我想,一旦我知道了该往哪个方向走,我就可以扩展它,允许监控多个值 请给我一些好的方向。我已经调查了线程、背景工作人员等。有许多不同的选项可用,但我不知道如何从一开始就以安全的方式创建它 谢谢,,C#使用线程等待多个条件,c#,multithreading,thread-safety,C#,Multithreading,Thread Safety,我正在寻找如何实现以下目标的概念: 我有4个设备通过RS232连接到一台PC,我想在那里创建一些控制应用程序。我已经为处理通信和错误处理的4个不同设备创建了类 在主线程中,我现在想要创建一些初始化序列。例如,一个控制参数是温度。所以我设置了温度,然后需要等待10分钟,直到温度达到。当达到这个值时,我想设置电源的输出电压等等。我需要并行控制一些参数(在等待温度进入可接受的窗口时,我还需要监控压力是否在某个范围内) 因此,我梦想着这样的事情,但不知道如何最好地实现它: 装置1.setTemp(200
可以使用EventWaitHandles在线程内同步操作。阅读更多
非常感谢你。我确信有一个简单的方法可以做到这一点。这正是我要找的;)
static EventWaitHandle _go = new AutoResetEvent(false);
static void Main(string[] args)
{
//Set the temperature
int Temp = 100;
int Voltage = 240;
Thread t1 = new Thread(() => SetTemperature(Temp) );
Thread t2 = new Thread(() => SetPowerVoltage(Votage));
Thread t3 = new Thread(() => SomeOtherImportantWork()); //Which can go on in parallel
t1.Start();
t2.Start();
t3.Start();
....
....
//you can wait or do other operations
}
//Logic to set the temperature
static void SetTemperature(int temperature)
{
Console.WriteLine("Setting temperature");
//Do your stuff
//Signal your other thread
_go.Set();
}
static void SetPowerVoltage(int voltage)
{
//Wait for the temperature to be set
Console.WriteLine ("Waiting...");
_go.WaitOne();
//This will begin execution once the temp thread signals
//Do your stuff to set voltage
}
static void SomeOtherImportantWork()
{
//Do Important work
}