1. 程式人生 > >Thread 中 Susend()和Resume過時的解決辦法

Thread 中 Susend()和Resume過時的解決辦法

在C#中對執行緒進行暫停時 發現Suspend()和Resume()過時,找了最後發現這樣可以比較簡單的解決這個問題

 	private static bool State = true;
    static AutoResetEvent ResetThr = new AutoResetEvent(false);
    //後臺執行緒執行的方法
    public static void Add()
    {
        while (true)
        {
            for (int i = 0; i < 1000; i++)
            {
                if (!State)
                {
                    ResetThr.WaitOne();
                }
                Console.WriteLine(i);
                Thread.Sleep(500);
                i++;
            }
        }
    }
	//暫停
    public static void Stop()
    {
        State = false;
    }
    //繼續
    public static void Continue()
    {
        State = true;
        ResetThr.Set();
    }

這樣做的另外好處是可以很明確的設定暫停位,以防在程式不想停止的地方將執行緒掛起.