我在一个button_start里面开始执行backgroundworker(RunWorkerAsync();)或者一个thread(Start()),在另一个button_stop里面终止(CancelAsync())或者用线程Abort();
不管用backgroundworker或者thread,按钮都要按过2秒才感觉点上,还是还觉会顿一下,怎么避免这个问题?能让来回切换很快?

解决方案 »

  1.   


     private void btn_Start_Click(object sender, EventArgs e)
    {
                this.btn_Start.Enabled = false;
                this.btn_Stop.Enabled = true;            entryPoint = new ThreadStart(ThStartCounter);
                th = new Thread(new ThreadStart(entryPoint));
                th.Start();
    }private void ThStartCounter()
            {   
                while (true)
                {
                    //开始计数
                    CounterSetting.OperationFuncRead2((ushort)m_dev, (ushort)0, out ReadValue);                //这里第一次加入的数据是没有变化的初始数据,外面程序要减掉
                    if (uOldReadValue != ReadValue)
                    {
                        uOldReadValue = ReadValue;                    AL.Add(ReadValue);
                    }                //延时必须加,否则读取的变化数据不正确
                    System.Threading.Thread.Sleep(0);
                }
            }private void btn_Stop_Click(object sender, EventArgs e)
    {   
           th.Abort();
    }
    大体程序就是这个样子,为什么会卡一下呢?