如何定期检查C#中是否完成了定期运行的任务?

时间:2016-05-18 20:46:59

标签: c#

我想要完成的任务:我想每10小时运行一次任务。只有先前的任务完成,我才想开始一项新任务。如果以前的任务异常完成,我想立即/ 10小时延迟之前重新启动它。

我在做什么:我有一个每10小时运行一次task_1的timerA。我还有一个timerB,每小时检查一次task_1是否成功完成或异常完成。

伪代码:

class
{
    public Task myTask;

    main()
    {
        timerB = new Timer(e => myTask = myMethod(), null, 0, 1hour);
    }

    myMethod()
    {
        if(!myTask.IsCompleted)
        {
            await myTask;
        }
        else if(myTask.IsFaulted)
        {
            timerA.change(0, 10hours);
        }

        timerA = new Timer(
            e => myTask = someMethodThatReturnsTask(),
            null, 0, 10hours);
    }
}

我的问题是:有人可以解释一下,如果不是有另一个timerB,有没有办法可以检查timerA中的任务是如何完成的,如果异常完成则立即重启任务? 这些计时器线程的顺序如何工作? 通常有一种更好的方法可以使用C#实现这一目标吗?

由于我不熟悉使用C#,我真的很感激任何指导。提前谢谢!

0 个答案:

没有答案