我有一个持续运行的程序。
当我启动程序时,我有一个BackgroundWorker(InitialStart.cs):
BackgroundWorker recordingSyncWorker = new BackgroundWorker();
recordingSyncWorker.DoWork += new DoWorkEventHandler(RecordingSyncCheck);
recordingSyncWorker.WorkerSupportsCancellation = false;
recordingSyncWorker.WorkerReportsProgress = false;
recordingSyncWorker.RunWorkerAsync();
void RecordingSyncCheck(object sender, DoWorkEventArgs e)
{
cHandler ch = new cHandler();
Timer theTimer;
int seconds = 1;
if (taskSeconds != null && taskSeconds != "")
seconds = Convert.ToInt32(taskSeconds);
int milliseconds = seconds * 1000;
theTimer = new Timer(10000);
theTimer.Elapsed += new ElapsedEventHandler(ch.SyncMethod);
theTimer.Interval = milliseconds;
theTimer.Enabled = true;
}
我在另一个类(cHandler.cs)中有两个方法:
SyncMethod(object source, System.Timers.ElapsedEventArgs e)
{
// random code
}
private string SDCardCheck(object whatever)
{
//more code
}
SDCardCheck通过WCF调用,所以它就像运行了另一个cHandler.cs实例。当我调用SDCardCheck时,有没有办法暂停BackgroundWorker?
答案 0 :(得分:3)
不要仅使用BackgroundWorker来启动计时器。启动计时器不是长时间运行;它可以直接从UI线程完成。
您的其他方法可以禁用计时器以阻止它被触发,然后再次启用它以允许它继续触发,以便有效地暂停其执行。