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

本文关键字:方法 是什么 任务 | 更新日期: 2023-09-27 18:12:21

我通常这样设置重复的任务,比如GUI更新等:

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

我最近开始用

开始任务
           Task.Factory.StartNew(() =>
            {
                MyApp();
            });

现在创建重复任务的首选方法是什么?我在StartNew中看不到任何明显的选项

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

我更喜欢使用微软的响应式框架。然后我可以这样做:

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

处理所有UI线程的封送、定时和方法的调用。

你可以像这样取消它:

subscription.Dispose();

继续使用System.Threading.Timer。或者,您可以使用Wait在专用线程中等待事件,但是我能想到的理由很少。