1

假设以下场景:
我有一个视图模型,它应该在特定延迟后自动关闭。

像这样的东西:

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());显然不起作用:

  1. 上不存在任何Job属性ITrigger
  2. 作业类应该是可序列化的。

问题:
有没有办法做我想要用 Quartz.net 做的事情,或者我是否试图将它用于它不是为它设计的东西?

顺便说一句:我知道这个问题,但对我来说,接受的答案似乎滥用 Quartz.net,而其他答案对我没有帮助。

4

1 回答 1

0

对于这种情况,我同意计时器应该是首选方式。我觉得为此目的的调度程序会使事情复杂化。

使用调度程序或计时器都会产生异步的东西。

如果您确实想使用调度程序,您可以使用 [Messenger] 与您的视图模型通信,以发送给定作业已完成的消息,并在视图模型中注册。1

于 2013-07-24T08:02:20.623 回答