如题,我在winform程序中使用BackgroundWorker控件来处理界面数据,以防止程序出现未响应的状态,并且根据需求,在程序运行的过程中需要一直使用到BackgroundWorker控件进行后台处理,但是,我在界面上,或者其他的弹出窗体上进行切换输入法时,程序会出现未响应而死掉,这是咋回事呀?
解决方案 »
- ◆winform下如何判断datagridview中的新增、删除、修改状态◆
- 贪吃蛇
- vs2005中文字符出现乱码,在线等
- 推荐几个能实现在C#WinForm上画折线图的东东??
- 我是c#新手,想问下,如何保存当前的信息,比如某件商品的价格,产地,下次重新启动软件的时候,这件商品的信息不用重新输入了??
- datatable用C#里面的什么类型保存?
- 小弟新人,下边的代码不理解,请大神予以指点,尤其是红色部分。多谢!!!
- 一个字符串在另一个字符串的个数
- 我中了Backdoor.Trojan病毒,怎么医治?
- 在C#中如何在一个窗口中调用另一个窗口的方法或存储属性?
- 通过代码选中 Tool里的Option 菜单 【Visual Studio Shell 开发】
- 不懂啊!急急急。。。。。
不过忘记解决方法了
和线程有关 是不是用到了 timer的定时执行之类
{
#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
}
换个 Thread.Timer 试试