2013-12-17 111 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線程中觸發。