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 が設計されていないものに使用しようとしていますか?

ところで:私はこの質問を認識していますが、受け入れられた回答がQuartz.netを悪用しているように見え、他の回答は役に立たないようです。

4

1 に答える 1

0

この場合、タイマーを使用することをお勧めします。この目的のためのスケジューラーは物事を複雑にすることだと思います。

スケジューラまたはタイマーを使用すると、両方とも非同期になります。

スケジューラを使用したい場合は、[メッセンジャー] を使用してビューモデルに通信し、指定されたジョブが完了したというメッセージを送信して、ビューモデルに登録することができます。1

于 2013-07-24T08:02:20.623 に答える