如何创建定期任务

时间:2013-08-02 17:57:07

标签: c# multithreading

我有C#2.0代码,我正在移植到C#4.0。我想使用System.Task代替System.ThreadPool.QueueueUserWorkItem。我还想使用System.Task代替System.Threading.Timer

如何创建定期System.Task?我在System.TaskSystem.TaskFactory上看不到任何内容。

亲切的考虑,

pKumara

2 个答案:

答案 0 :(得分:19)

使用Observable.Interval或Observable.Timer。 Timer允许您传入dueTime

如参见。

           // Repeat every 2 seconds.
        IObservable<long> observable = Observable.Interval(TimeSpan.FromSeconds(2));

        // Token for cancelation
        CancellationTokenSource source = new CancellationTokenSource();

        // Create task to execute.
        Action action = (() => Console.WriteLine("Action started at: {0}", DateTime.Now));
        Action resumeAction = (() => Console.WriteLine("Second action started at {0}", DateTime.Now));

        // Subscribe the obserable to the task on execution.
        observable.Subscribe(x => { Task task = new Task(action); task.Start();
                                      task.ContinueWith(c => resumeAction());
        }, source.Token);

enter image description here

答案 1 :(得分:3)

您可以尝试使用Observable.Timer返回一个可观察的计时器序列。