例特定のシナリオでは今Dispatcher.Invoke - 私のUIの凍結/ブロックを行い
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)OffLoadWork);
のために、このOffLoadWorkをする必要があります、あなたはApplicationIdleにBeginInvokeメソッドとして登録され、いくつかのルーチンを持っている想像してみて私は
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.ApplicationIdle, (Func<object>)(() =>
{
//do nothing just wait for the OffLoadWork to happen...
return null;
}));
を呼び出すためにか、それは私のUIがフリーズを発生することができため、私はそうUI操作の途中で午前以来、UIでの操作を行うときに実行、ボタンのクリックで、たとえば、それは安全です実際にアイドルになるのはいつですか?
私の最初のテストでは動作していたようですが、フリーズ/ブロックする方法がないことを確認したいだけです。
私はInvokeメソッドが同期であり、本質的にブロックがあることを知っています。なぜなら、私はUI操作中ですからApplicationIdleの状態が決して上がらないかもしれないので、私は現在UIでコードを実行していますか? –
これは実際にApplicationIdleではなく、単にrelatavityを示しています。したがって、Dispatcherキューに優先順位の高い他の操作がある場合は、それらが最初に呼び出され、操作が完了するとこの操作が選択されます。 – Nitin
この権利を得るために、Priority ApplicationIdleは実際にアプリケーションがその時点でアイドル状態(何もしていない状態)であることを意味するものではなく、そのキーの下のキュー内のすべてを実行し、 ? –