OnMessage事件到STA线程

时间:2013-12-17 10:02:51

标签: wpf vb.net multithreading xmpp

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

调用线程必须是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)

我不能使用后台工作程序,因为这已经在错误的主题中了,不是吗?

1 个答案:

答案 0 :(得分:0)

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