我通常设置重复任务,如GUI更新等,如下所示:
MonitorTimer = new System.Threading.Timer(new TimerCallback(Monitor), null, 1000, 2000);
我最近开始使用
启动任务 Task.Factory.StartNew(() =>
{
MyApp();
});
现在创建重复任务的首选方法是什么?我看不到任何使用StartNew做这个的明显选择。
答案 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等待专用线程中的事件,但我可以想到它没有什么好理由。