重复任务的首选方法是什么?

时间:2014-07-10 09:57:10

标签: c# multithreading timer task

我通常设置重复任务,如GUI更新等,如下所示:

 MonitorTimer = new System.Threading.Timer(new TimerCallback(Monitor), null, 1000, 2000);

我最近开始使用

启动任务
           Task.Factory.StartNew(() =>
            {
                MyApp();
            });

现在创建重复任务的首选方法是什么?我看不到任何使用StartNew做这个的明显选择。

2 个答案:

答案 0 :(得分:1)

我更喜欢使用Microsoft的Reactive Framework。然后我可以这样做:

var subscription =
    Observable
        .Interval(TimeSpan.FromSeconds(1.0))
        .ObserveOn(this) /* this is the current form */
        .Subscribe(() =>
        {
            MyApp();
        });

它处理所有UI线程编组,时间和方法的调用。

你可以像这样轻松取消:

subscription.Dispose();

答案 1 :(得分:0)

继续使用System.Threading.Timer。或者,您可以使用Wait等待专用线程中的事件,但我可以想到它没有什么好理由。