Vielleicht wird
itemReceived aus einem anderen Thread aus aufgerufen, aber dann müsste eigentlich eine Exception geworfen werden, wenn der Schalter, den
Kha angesprochen hat, nicht abgeschaltet ist. Du könntest aber einfach mal versuchen, es so zu machen, wie man es im Falle dieser Exception tun würde:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| private void button1_Click(object sender, EventArgs e) { Session sess = new Session(); sess.itemReceived += new FooBarHandler("foo_bar"); }
private void foo_bar(Session sess, Item item) { MessageBox.Show("foobar"); setTextBoxText("item received"); }
private void setTextBoxText(string text) { if (TextBox.InvokeRequired) TextBox.Invoke(new Action<string>(setTextBoxText), text); else TexBox.Text = text; } |
Die Methode
setTextBoxText prüft, ob der Text der Textbox ohne weiteres geändert werden kann, und wenn nicht, ruft sie sich selbst im Hauptthread auf. Schau auch mal per Einzelschritt, ob
Invoke verwendet wird.
Grüße,
Yogu