2013-12-17 73 views
0

我在一个vb/wpf应用程序中使用Jabber.net库。我想在OnMessage事件引发时打开一个窗口,但我得到一个错误:OnMessage事件到STA线程

调用线程必须是STA,因为很多UI组件都需要这个。

这是我的代码:

Private Sub client_OnMessage(sender As Object, msg As protocol.client.Message) Handles client.OnMessage 
    Debug.WriteLine("[Message Received] " & msg.From.User & ": " & msg.Body) 
    client.Message(msg.From, "Message Reveived: " & msg.Body) 
    Dim dialog As New AlertDialog(msg.From.User, "Test", msg.Body) 
    dialog.Show() 
End Sub 

这是进入一个错误的行:

Dim dialog As New AlertDialog(msg.From.User, "Test", msg.Body) 

我不能使用后台工作,因为这已经是错了线程,不是吗?

回答

0

将客户端对象上的InvokeControl设置为您窗体上的任何控件。这将确保所有的JabberNet回调函数在该GUI控件的GUI线程中触发。