问题描述
- c#改变进程主窗口后,窗口上的timer,backgroundworker异常
-
原先program里的application.run是登录窗口,我现在改为主页面后,主页面上的timer控件设定的是1分钟执行1次,但是实际却1分钟执行3-5次,timer控件控制的backgroundworker也是,isbusy属性一直都是false,哪怕独立线程没结束,还是会运行。之前还好好的呢,为啥?
图片是main入口
下面是主页面上的1个timer和对于的独立线程。
///
/// 数据质量监控 30,000
///
///
///
private void sjzljktimer_Tick(object sender, EventArgs e)
{
if (!SJZLJKbgw.IsBusy)
{
SJZLJKbgw.RunWorkerAsync();
}
}
private void SJZLJKbgw_DoWork(object sender, DoWorkEventArgs e)
{
functions.WDZLKZ();
}
解决方案
sjzljktimer的interval是不是60000
另外functions.WDZLKZ();执行的时间是不是超过1分钟
解决方案二:
if (!SJZLJKbgw.IsBusy) 逻辑判断问题,实际是时间片用完,挂起了,所以这个是false
解决方案三:
建议用线程定时, 不要用timer。
时间: 2024-10-31 00:15:11