2010-11-22 16 views
1

をcrossthreading、コールバック関数には、.NET、私はそのようなコードを持っている悩み

try{ 
    text.Invoke(new MethodInvoker(() => text.AppendText("test"))); 
    } 
catch (Exception e) 
     { 
      text.Invoke(new MethodInvoker(() => text.AppendText(e.Message))); 
     } 

テキストはwinforms.textbox とtext.Invokeである..私は "Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException" を持っていますどうして?この方法は常に私のために働いた。

+0

*バックグラウンドスレッドのUIコントロールは*作成*できましたか? –

+0

did not understand – eba

+0

これを引き起こすはずのものは何も明らかではありません - それで、私たちが見ることのできるコードの外には何か変わったように思えます。私は問題がどこに/どのように 'テキスト'が作成されているのだろうかと思っています。しかし、これだけから伝えるのは非常に難しいです。 –

答えて

0

//blahblahblahは、1つまたは複数のUIコントロールと会話するものとしますか?たぶん値を読み書きするのでしょうか?それはスレッドアフィニティのために動作しません。 UIコントロールと話している場合は、Invokeを使用して先にUIスレッドにアクセスしてください。もちろん、外部のデータをバックグラウンドスレッドで照会することができます。

+0

ok、blablabla = text.Invoke(new MethodInvoker(()=> text.AppendText( "test"))); – eba

関連する問題