/** * @brief 非同期終了時にで呼ばれるように登録して使用するメソッド * @param[in] IAsyncResult 非同期実行したdelegate * @return void * @note EndInvoke で 非同期実行した Methodのreturn値を取得し textBox1 に設定 */ private void MyCallBackMethod(IAsyncResult ar) { string_int_delegate dlgt = (string_int_delegate)ar.AsyncState; //textBox1.Text = dlgt.EndInvoke(ar); SetTextBox1(dlgt.EndInvoke(ar)); // 結果を取得 }
/** * @brief 非同期処理開始 ボタン処理 * @param[in] object sender * @param[in] EventArgs e * @return void * @note BeginInvoke で myAsyncCls.originalMethod 開始 */ private void button1_Click(object sender, EventArgs e) { button1.Enabled = false; // 別クラスの Methodを非同期実行 MyAsyncClass myAsyncCls = new MyAsyncClass(); string_int_delegate dlgt = new string_int_delegate(myAsyncCls.originalMethod); // 非同期処理呼び出し、終了時の callback Method登録 dlgt.BeginInvoke(3000, new AsyncCallback(MyCallBackMethod), dlgt); // 自クラスの Methodを非同期実行 string_int_delegate dlgt2 = new string_int_delegate(SeltOriginalMethod); // 非同期処理呼び出し、終了時の callback Method登録 dlgt2.BeginInvoke(6000, new AsyncCallback(MyCallBackMethod), dlgt2); }