【多线程-Suspend()和Resume()方法】

来源:互联网 发布:软件测手机真伪 编辑:程序博客网 时间:2024/05/18 00:03

Suspend()用于挂起线程,Resume()用于继续执行已经挂起的线程。可以使用这两个方法进行线程的同步,和Start()方法有些类似的是:在调用Suspend方法后不会立即的停止,而是执行到一个安全点后挂起。

    class Program    {        private static Thread subthread ;        private static string name ="";        static void Main(string[] args)        {            subthread = new Thread(new ThreadStart(GetShow));            subthread.IsBackground = false;            subthread.Name = "子线程";            subthread.Start();   //开启线程            subthread.Suspend(); //挂起            Console.WriteLine(subthread.Name + "挂起");            Console.WriteLine("{0}后台线程", Thread.CurrentThread.Name+Thread.CurrentThread.IsBackground+",结束");            subthread.Resume();  //执行            Console.WriteLine("主线程结束");        }        static void GetShow()        {            Console.WriteLine("输入姓名:");            name = Console.ReadLine();            Console.WriteLine("执行");        }    }


在开启子线程后立即让他挂起,直到执行了Resume()后恢复线程的执行。注意如果在线程没有挂起时去调用Resume()方法会出现异常,所有使用这样的方法进行线程线程同步已经不推荐使用了。F12查看该方法看到已经进行了Obsolete进行了标记。


线程的同步可以使用互斥体(Mutex)和信号量(Signaling)进行。

0 0