ホームページ >バックエンド開発 >C#.Net チュートリアル >C# デリゲートの非同期呼び出しのグラフィカルなコード例

C# デリゲートの非同期呼び出しのグラフィカルなコード例

黄舟
黄舟オリジナル
2017-03-04 10:17:411652ブラウズ

デリゲートの非同期呼び出し

複雑で時間のかかるタスクをデリゲートに完了させたい場合、同期呼び出しは適切な選択ではないことがあります。その場合、ユーザーは退屈な時間の消費に直面することになり、長い(比較的)お待ちください。このとき、デリゲートの非同期呼び出しは、C#の非同期呼び出しもカプセル化され、beginInvokeendInvkeを介して完了します。以下に例を示します。义1. 了 コミッションを定義します。

MyDelegate2. は外部サブスクリプションのイベントを定義します

3. やってみようメソッドが呼び出されるたびに increment

が自動的に増加します。値が 5 の場合、イベントは非同期で呼び出されます 重要な点は次のコードです。

IAsyncResult result = this.callBack.BeginInvoke
                        (new AsyncCallback(
                            (ia) => {
                                MessageBox.Show("completed");
                                AsyncResult ar = (AsyncResult)ia;
                                MyDelegate md = ar.AsyncDelegate as MyDelegate;
                                int r = md.EndInvoke(ia);
                                MessageBox.Show(r.ToString() + ia.AsyncState);
                            }), "message");
                    MessageBox.Show("begin invoke");
BeginInvoke 関数には 4 つのパラメータが含まれます: AsyncCallback オブジェクト: このパラメータの意味は、コールバックが完了したときに次に何をするかを指示することです。メソッドを渡す必要があります。 new AsyncCallback(ここでメソッドを受け取ります。ここではlambdaexpression

)

を使用しました。 Object

Object: コールバック終了時に呼び出されるメソッドに渡されるパラメータ。


AsyncResult ar = (AsyncResult)ia;//// 受信IasyncResultを取得し、Async Resultオブジェクトに変換します

MyDelegate md = ar.AsyncDelegate as MyDelegate //// callBack オブジェクトを取得します

int r = md.EndInvoke(ia ) ;////デリゲートの呼び出しを終了し、戻り値を取得します

MessageBox.Show(r.ToString() + ia.AsyncState);////戻り値

OK を取得したかどうかを確認します。非同期デリゲートが定義されたので、次のステップは、

を呼び出します。

新しい A timerasyntroniseDelegate オブジェクト。

callBackイベントを購読します。メソッドの最後に、1が返されます。

タイマーを使用して、増分累積操作を完了し、毎秒1を累積します。

increment5まで蓄積されると、callbackイベントがトリガーされ、10をループさせます。 10億秒-レート。

実行後、のプロンプトボックスが表示され、続いて 2〜3について 秒のプロンプト ボックスが表示され、その後 (非同期呼び出しの最後に、正常に取得されたことがわかります)の帰還上記は、C# デリゲーションの非同期呼び出しのグラフィック コード例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) を参照してください。 )!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。