我正在编写一个小型聊天应用程序,我有以下事件处理程序:
void o_Typing(object sender, EventArgs e)
{
MessageBox.Show("Fired!");
this.Text = "Fired!";
}
o_Typing
是从TabPage
派生的类中的一个方法。基本上,我想让每个对话都有自己的选项卡。
事件处理程序由我的Chat对象触发,该对象在另一个线程中运行。我有1个UI线程和另一个线程用于每个Chat对话(以保持轮询服务器以获取新数据)。
当事件被触发时,MessageBox
弹出,但选项卡标题不会更改。在事件触发一次后,它再也不会触发,这使我相信该事件在工作线程中被调用,尽管它是在UI线程中定义的。
如何使我的事件从工作线程中调用,并使用Invoke()
在UI线程上执行它们?