lanメッセンジャーをシミュレートするためのac#プログラムでは、特定のテキストボックスで受け取ったテキストを表示する必要があるbeginreceiveのコールバック関数を持っています。 this.textBox1.Text = sb.ToString ); しかし、これを行うには、クロススレッド操作が有効なエラーではありません。 私はobject.invokeメソッドを使用する必要があることを認識していますが、スレッディングに関してはまだ素朴なので、デリゲートを呼び出すための完全なコードを私に提供してください。C#クロススレッド操作エラー
3
A
答えて
8
作業をプッシュする必要がありますUIに戻す。幸いにも、それは簡単です:
this.Invoke((MethodInvoker) delegate {
this.textBox1.Text = sb.ToString();
});
これは、すべての重労働を行うには、「匿名メソッド」とC#の「捕獲変数」機能を使用しています。 .NET 3.5では、あなたはAction
を使用することを好むかもしれないが、それは本当の違いはありません:
this.Invoke((Action) delegate {
this.textBox1.Text = sb.ToString();
});
3
あなたはこの方法でそれを使用することができます。
void MyCallback(IAsyncResult result)
{
if (textBox1.InvokeRequired) {
textBox1.Invoke(new Action<IAsyncResult>(MyCallBack),new object[]{result});
return;
}
// your logic here
}
関連する問題
- 1. クロススレッド操作
- 2. クロススレッド操作の異常動作
- 3. 待機中のメッセージフォームのプログレスバー - エラー:InvalidOperationExceptionクロススレッド操作が有効でない - C#
- 4. クロススレッド操作はC#では無効ですか?
- 5. c# - クロススレッド操作が有効でないListView
- 6. C#windowsはカスタムコントロールのクロススレッド操作をフォームします
- 7. C#のクロススレッド操作ではない有効な
- 8. C#でのスレッド例外エラー:クロススレッド操作が有効でない:クロススレッド操作からアクセスされた 'lblp4'コントロールが有効でない
- 9. クロススレッド操作ではない有効:
- 10. C#Toolstripのプログレスバーとラベルがクロススレッド操作から更新されない
- 11. は、クロススレッド操作ではない有効な
- 12. クロススレッド操作有効ではありません
- 13. Form.Focus InvalidOperationException:クロススレッド操作が有効でない
- 14. クロススレッド操作が有効ではありませんVB.NET
- 15. シリアル入力をテキストボックスに表示する - クロススレッド操作
- 16. Parallel.Invokeを使用してクロススレッド操作が無効である
- 17. C#のListViewのクロススレッド、クロススレッドのログを作成しようとすると
- 18. .NET MVC C#のエラー - この操作が
- 19. クロススレッド動作の「滝戻る」
- 20. クロスステム操作エラー
- 21. スキームリスト操作エラー
- 22. C++ビット操作
- 23. C++ファイル操作
- 24. C#パス操作
- 25. Cビット操作
- 26. C、ビットマップ操作
- 27. Cポインタ操作
- 28. ラベルコントロールに値を代入しようとすると、クロススレッド操作エラーが発生する
- 29. 2.0での使用は、私が有効でないエラー、クロススレッド操作を得た:コントロール「ListView1のは、」それは
- 30. なぜ依然としてクロススレッド操作がデリゲートのInvokeで有効なエラーではないのですか?