C#Metro Styleアプリでの非同期イベントの処理:クリーンソリューション
非同期プログラミングは、レスポンシブC#/XAMLメトロスタイルのアプリに不可欠であり、長期にわたる操作中のUIフリーズを防ぎます。 ただし、ユーザーの相互作用が中間処理が必要な場合に発生します。この記事では、非同期メソッド内でのイベントを効率的に待ち望んでいる方法を詳しく説明し、イベントがトリガーされるまで実行を一時停止します。
課題:非同期操作中にユーザー入力を待っています
シナリオを想像してください:ボタンは非同期メソッドを開始します。 この方法では、進行する前にユーザー入力(たとえば、「続行」ボタンをクリックする)が必要になる場合があります。 重要な質問:ユーザーが対話するまで、どのように一時停止しますか?
GetResults
GetResults
非効率的なポーリング:
を回避する方法 単純な(ただし、欠陥のある)アプローチには、「継続」ボタンのイベントハンドラーによって更新されたフラグが含まれます。この一定のポーリングは資源を無駄にし、非効率的です
エレガントなイベントベースのソリューションGetResults
Task.Delay
c#は、優れたイベント駆動型ソリューションを提供します:
1。
を利用します
a オブジェクトを信号としてインスタンス化します。SemaphoreSlim
「継続」ボタンが押されたときにセマフォをリリースします。
SemaphoreSlim
GetResults
を作成して結果をクリックします。
SemaphoreSlim.WaitAsync
[ボタン]クリックでタスクを完了します。、待ってください。タスクが完了するまで実行が停止します
TaskCompletionSource
これらのイベント駆動型の方法は、ユーザーの相互作用を非同期操作に統合し、複雑なシナリオでのスムーズなユーザーエクスペリエンスを確保するためのクリーンで効率的な方法を提供します。
以上がAsync C#Metro Appメソッドでのイベントを待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。