簡體   English   中英

如何在C#中順序運行線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM