如题,我在winform程序中使用BackgroundWorker控件来处理界面数据,以防止程序出现未响应的状态,并且根据需求,在程序运行的过程中需要一直使用到BackgroundWorker控件进行后台处理,但是,我在界面上,或者其他的弹出窗体上进行切换输入法时,程序会出现未响应而死掉,这是咋回事呀? 

解决方案 »

  1.   

    遇到过..
    不过忘记解决方法了
    和线程有关 是不是用到了 timer的定时执行之类
      

  2.   

    有用到,   private void timer2_Tick(object sender, EventArgs e)//定时更新数据
             {
                 #region 判断时间是否大于设定的时间。进行更新
                 if (this.time.Hour >= MethodOperation.Time.Hour && this.time.Minute >= MethodOperation.Time.Minute)
                 {
                     System.GC.Collect();
                     if (!backgroundWorker2.IsBusy)//判断当前更新的线程是否处于忙碌状态
                     {
                         backgroundWorker2.RunWorkerAsync();//不是忙碌状态,则启动线程,更新数据
                     }
                     this.timer2.Stop();
                 } 
                 #endregion
             }
    但是我时时更新数据不是用timer,是在这个事件进行判断的        void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)//结束
             {
                 #region 异步结束后
                 MethodOperation.FlushMemory();//释放
                 if (e.Cancelled == true)
                 {
                     backgroundWorker1.CancelAsync();//取消暂停
                   }
                 else { 
                     AddFunction(); //调用判断终端链接状态的函数
                     backgroundWorker1.RunWorkerAsync(); //继续执行异步
                 } 
                 #endregion
             }
      

  3.   

    用的空间 Form.Timer 吧
    换个 Thread.Timer 试试
      

  4.   

    好像是因为使用控件Timer的原因  是不是因为控件在主线程里 之类的原因