2011-10-11 186 views
0

基本上我的服務器發送一個客戶端字符串,然後在客戶端使用Dim data() As String = receivedString.Split("|"c)分解一個字符串的例子MESSAGE|TestUser|This Is The Message當我收到這個字符串時我想要做的事情是首先檢查看看如果此用戶之前已經向該客戶端發送了一條消息(應該已經有一個與當前「聊天」對話的窗口),如果用戶在追加文本之前發送了一條消息來說出一個富文本框。如果用戶在創建「聊天窗口」的新實例之前未發送消息,則來自服務器的任何未來消息將轉到此窗口實例。表單的多個實例

感謝, Houlahan

Dim data() As String = message.Split("|"c) 
    Select Case data(0) 
     Case "MESSAGE" 
      Try 
       If conversations.ContainsKey(data(1)) Then 
        Dim convoWindow As ChatWindow 
        convoWindow = conversations.Item(data(1)) 
        convoWindow.RichTextBox1.AppendText(data(2)) 
       Else 
        conversations.Add(data(1), New ChatWindow()) 
        Dim convoWindow As ChatWindow 
        convoWindow = conversations.Item(data(1)) 
        convoWindow.Show() 
        convoWindow.RichTextBox1.AppendText(data(2)) 
       End If 

回答

1

你可以用不同的方式擺做到這一點。第一個出現在我腦海中的將是創建一個Dictionary對象,它將您的TestUser作爲與表示對話的Form關聯的關鍵字。例如

conversations.Add(testUser, new FormConversation(...)) 

收到消息時,您會引用跟蹤所有正在進行的會話的字典。

如果用戶名不存在任何鍵,則創建一個新表單並將該用戶與對錶單的引用一起添加到字典中。如果確實存在,可以根據用戶名從字典中提取出來,只需將其放在前面並將消息傳遞給它。

+0

香港專業教育學院更新了我的第一篇文章試圖做你解釋什麼即時通訊不知道,如果在這裏正確的軌道IM,但它創建的聊天窗口,但爲什麼感謝 – Houlahan

+0

是的,你是在正確的軌道上窗口只是凍結不能完全肯定。它在哪裏凍結? –

+0

林不知道的,我貼的運行沒有任何運行時錯誤,但形式的新實例代碼是不可訪問充當如果墜毀 – Houlahan