[英]How to run threads sequentially in C#
我有一些計時器正在更新數據集。 我需要計時器按順序運行,而又不會碰到另一個。 我可能一次只跑一兩個或三個。 因此,他們必須先運行1,2,3,然后再運行1,2,3。 我創建了這個小提琴,但是我還沒有記下來:
class Example
{
private static ManualResetEvent mr = new ManualResetEvent(false);
private static AutoResetEvent event_1 = new AutoResetEvent(true);
private static AutoResetEvent event_2 = new AutoResetEvent(false);
private static void t1_Tick(object sender, EventArgs e)
{
//update ds inside here
//ds.Tables["Alarms"].Rows[0][0]="foo";
//same in all other Tick functions
Console.WriteLine("1");
mr.Set();
}
private static void t2_Tick(object sender, EventArgs e)
{
mr.WaitOne();
Console.WriteLine("2");
mr.Set();
}
private static void t3_Tick(object sender, EventArgs e)
{
mr.WaitOne();
Console.WriteLine("3");
mr.Set();
}
static void Main()
{
System.Timers.Timer t1 = new System.Timers.Timer();
t1.Elapsed += t1_Tick;
t1.Enabled = true;
System.Timers.Timer t2 = new System.Timers.Timer();
t2.Elapsed += t2_Tick;
t2.Enabled = true;
System.Timers.Timer t3 = new System.Timers.Timer();
t1.Elapsed += t1_Tick;
t1.Enabled = true;
Console.ReadKey();
}
}
如果只有兩個計時器在運行,則必須是1,2,然后是1,2
您可以改用線程安全的DispatcherTimer
嗎?
請參閱http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.