fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

Invoke

別スレッドからのコントロールの変更

コントロールを作成したスレッドと別スレッドからコントロールを変更するには、 Invokeを使う 更新用デリゲート delegate void Delegate_UpdateForm(); // データを受信したイベント void Data_Rcv() { Invoke( new Delegate_UpdateForm(UpdateForm)); } // …

別スレッドでローディング画面を出す

別スレッドでローディング画面をBeginInvokeで出して、 コールバック関数でそのローディング画面を閉じる場合 ShowDialogの後にClose()があると二重にCloseすることになり 「破棄されたオブジェクトにアクセスできません。」のエラーが出る。

begininvoke invoke 違い

Invoke:Main Threadの作業が終わるまでまって、Work Threadの次の作業に入る BeginInvoke:Main Threadの作業を待たずにWork Threadがどんどん作業して結果を寄せる。 デリゲートを使用した非同期プログラミング デリゲートを使用すると、同期メソッドを非…

非同期の実装

Delegateの基本 // Delegate_Abcという名のデリゲート型を定義 private delegate void Delegate_Abc(int a); void main () { // デリゲートに関数を登録 Delegate_Abc abc = new Delegate_Abc(ABC_Method); // デリゲートを介して関数を呼び出し a(256); } /…

BeginInvoke

// デリゲート型の宣言 public delegate string AsyncMethodCaller(int targetCount, out int executeCount); // デリゲート型の変数に関数を登録 AsyncMethodCaller caller = someExec; // 非同期処理後の動作を設定 AsyncCallback callback = new AsyncCal…