using System;
using System.Threading;

namespace ConsoleApp1
{
    class MyThread
    {
        Thread t = null;
        ManualResetEvent manualEvent = new ManualResetEvent(true);//为true,一开始就可以执行
        private void Run()
        {
            while (true)
            {
                this.manualEvent.WaitOne();
                Console.WriteLine("线程id:{0}", Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(2000);
            }
        }

        public void Start()
        {
            this.manualEvent.Set();
        }

        public void Stop()
        {
            this.manualEvent.Reset();
        }

        public MyThread()
        {
            t = new Thread(this.Run);
            t.Start();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            MyThread myt = new MyThread();
            while (true)
            {
                Console.WriteLine("输入 stop 后台线程挂起 start 开始执行!");
                string str = Console.ReadLine();
                if (str.ToLower().Trim() == "stop")
                {
                    Console.WriteLine("线程停止运行...\n");
                    myt.Stop();
                }
                if (str.ToLower().Trim() == "start")
                {
                    Console.WriteLine("线程开启运行...\n");
                    myt.Start();
                }
            }
        }

    }
}

 

posted on 2018-12-25 09:46  chester·chen  阅读(220)  评论(0编辑  收藏  举报