我有AB两个输入框 ,C这个按钮事件(他有true和false两个状态) 
我AB两个文本框分别写了回车事件(这两个文本框的值分别会向一个全局变量插入),
然后我写了一个线程去判断全局变量里面的count是否为2,然后我希望在按钮Cfalse 的时候启动线程,true 的时候关闭,这个我该怎么做。有大佬会吗

解决方案 »

  1.   

    用一个bool型的全局变量,在按动按钮的时候改变这个全局变量,在线程里面判断这个全局变量的布尔值,按照你的要求跳出循环
      

  2.   

    使用线程池方法:
    private bool buttonResult = false;
            private volatile bool isExit = false;
            private List<string> strList = new List<string>();
            private void button1_Click(object sender, EventArgs e)
            {
                buttonResult = !buttonResult;
                if (!buttonResult)
                {
                    isExit = false;
                    ThreadPool.QueueUserWorkItem(state => MyThread());
                }
                else
                {
                    isExit = true;
                }
            }        private void MyThread()
            {
                while (!isExit)
                {
                    if (strList.Count == 2)
                    {                }
                    Thread.Sleep(1000);
                }
            }
    使用task方法:
    private bool buttonResult = false;
            private List<string> strList = new List<string>();
            private CancellationTokenSource src = new CancellationTokenSource();
            private void button1_Click(object sender, EventArgs e)
            {
                buttonResult = !buttonResult;
                if (buttonResult)
                {
                    src = new CancellationTokenSource();
                    Task.Factory.StartNew(MyThread, src.Token);
                }
                else
                {
                    src.Cancel();
                }
            }        private void MyThread()
            {
                while(!src.IsCancellationRequested)
                {
                    if (strList.Count == 2)
                    {                }
                    Thread.Sleep(1000);
                }
            }