当前位置:编程学习 > C#/ASP.NET >>

急啊,BackgroundWorker 控件和切换输入法造成程序死机的问题

如题,我在winform程序中使用BackgroundWorker控件来处理界面数据,以防止程序出现未响应的状态,并且根据需求,在程序运行的过程中需要一直使用到BackgroundWorker控件进行后台处理,但是,我在界面上,或者其他的弹出窗体上进行切换输入法时,程序会出现未响应而死掉,这是咋回事呀?  --------------------编程问答-------------------- 遇到过..
不过忘记解决方法了
和线程有关 是不是用到了 timer的定时执行之类 --------------------编程问答--------------------
引用 1 楼 luochanghua 的回复:
遇到过..
不过忘记解决方法了
和线程有关 是不是用到了 timer的定时执行之类

有用到,

   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
         }
--------------------编程问答-------------------- 有么有人知道呀,急死了,自己帮顶。  --------------------编程问答-------------------- 用的空间 Form.Timer 吧
换个 Thread.Timer 试试 --------------------编程问答-------------------- 好像是因为使用控件Timer的原因  是不是因为控件在主线程里 之类的原因 --------------------编程问答--------------------
引用 5 楼 luochanghua 的回复:
好像是因为使用控件Timer的原因 是不是因为控件在主线程里 之类的原因

找到了,不是控件的原因,是因为窗体跳转的原因。我加载的时候是一个加载进度条的窗体,然后等加载完毕后,就会跳往另一个(主)窗体,如果我不使用跳转,就没问题,我加上跳转,就又出现这样的情况了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,