急啊,BackgroundWorker 控件和切换输入法造成程序死机的问题
如题,我在winform程序中使用BackgroundWorker控件来处理界面数据,以防止程序出现未响应的状态,并且根据需求,在程序运行的过程中需要一直使用到BackgroundWorker控件进行后台处理,但是,我在界面上,或者其他的弹出窗体上进行切换输入法时,程序会出现未响应而死掉,这是咋回事呀? --------------------编程问答-------------------- 遇到过..不过忘记解决方法了
和线程有关 是不是用到了 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,是在这个事件进行判断的
--------------------编程问答-------------------- 有么有人知道呀,急死了,自己帮顶。 --------------------编程问答-------------------- 用的空间 Form.Timer 吧
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)//结束
{
#region 异步结束后
MethodOperation.FlushMemory();//释放
if (e.Cancelled == true)
{
backgroundWorker1.CancelAsync();//取消暂停
}
else {
AddFunction(); //调用判断终端链接状态的函数
backgroundWorker1.RunWorkerAsync(); //继续执行异步
}
#endregion
}
换个 Thread.Timer 试试 --------------------编程问答-------------------- 好像是因为使用控件Timer的原因 是不是因为控件在主线程里 之类的原因 --------------------编程问答--------------------
找到了,不是控件的原因,是因为窗体跳转的原因。我加载的时候是一个加载进度条的窗体,然后等加载完毕后,就会跳往另一个(主)窗体,如果我不使用跳转,就没问题,我加上跳转,就又出现这样的情况了。
补充:.NET技术 , C#