C#/XAMLメトロスタイルアプリの非同期タスクの管理
C#/XAMLメトロスタイルのアプリケーションでは、UIの凍結を防ぐために/async
を使用して非同期に長期にわたる操作を処理することが重要です。 ただし、ユーザーの相互作用に基づいてこれらの操作を一時停止して再開する状況が発生します。
イベント駆動型の一時停止にsemaphoreslimを使用するawait
初期カウント0と1の最大カウントでASemaphoreSlim
オブジェクトを初期化: [続行]ボタンをクリックすると、セマフォをリリースします:
SemaphoreSlim
長期にわたる方法(例えば、private SemaphoreSlim signal = new SemaphoreSlim(0, 1);
)内で、セマフォの信号を待ちます:signal.Release();
タスク管理GetResults
を使用しています
await signal.WaitAsync();
もう1つの効果的なアプローチには、
a
[続行]ボタンをクリックすると、タスクの結果を設定します。
TaskCompletionSource<bool>
非同期操作では、タスクを待ちます:
イベント駆動型の一時停止/履歴書の利点
TaskCompletionSource<bool>
これらの方法は、投票の非効率性を回避し、忙しい待機やリソースの無駄を排除します。 イベント駆動型メカニズムを採用することにより、長期にわたる非同期タスクの効率的な一時停止と再開機能を達成します。以上がC#/XAMLメトロアプリで非同期操作を一時停止および再開する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。