暂停其他方法的BackgroundWorker

时间:2014-10-30 16:42:56

标签: c# wcf

我有一个持续运行的程序。

当我启动程序时,我有一个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?

1 个答案:

答案 0 :(得分:3)

不要仅使用BackgroundWorker来启动计时器。启动计时器不是长时间运行;它可以直接从UI线程完成。

您的其他方法可以禁用计时器以阻止它被触发,然后再次启用它以允许它继续触发,以便有效地暂停其执行。