假设以下场景:
我有一个视图模型,它应该在特定延迟后自动关闭。
类似这样的东西:
public AutoCloseViewModel : ViewModelBase
{
public void Close()
{
/* perform actions necessary to close
the view model and its associated view */
}
protected override OnActivate()
{
// schedule job that calls Close on this instance, something like
var trigger = TriggerBuilder.Create()...;
trigger.Job = new DelegateJob(() => Close()); // <----
scheduler.ScheduleJob(trigger);
}
}
线路trigger.Job = new DelegateJob(() => Close());
显然不起作用,原因如下:
ITrigger
上不存在Job
属性- 作业类应该是可序列化的
问题:
有没有一种方法可以做我想用Quartz.net做的事情,或者我想用它做一些它不是为之设计的事情?
BTW:我知道这个问题,但对我来说,公认的答案似乎滥用了Quartz.net,而另一个答案对我没有帮助。
对于这种情况,我同意计时器应该是首选方式。我觉得出于这个目的的日程安排会使事情复杂化。
使用调度器或定时器都会产生异步的东西。
如果您确实想使用调度程序,您可以使用[Messenger]与视图模型通信,发送给定作业已完成的消息,并在视图模型中注册。1