Mình mới học c# ít hôm, nhưng có nhiều vấn đề quá, nó k đơn giản như Java 1 chút nào
Mong các bạn giúp đỡ:


Mình tạo 1 ứng dụng Chat với Server và Client;

Server thì làm việc OK, còn Client thì có một lỗi mà mình k biết phải sửa như nào
1. Giả sử: Person-APerson-B đăng nhập vào hệ thống



<font color="blue">2.
Có 1 List các user đã đăng nhập ở Form của client, Client Click vào user nào thì sẽ có 1 form PrivateChat hiện ra (nếu đã có rồi thì nó show ra, còn chưa thì khởi tạo rồi show).
Giải sử Person-A click vào Person-B, thì một form PrivateChat with B sẽ đựoc khởi tạo và show ra.



- Person-B chưa click vào Person-A để khởi tạo PrivateChat form với A
- Person-A gửi cho B 1 tin nhắn, thì B sẽ tạo ra 1 form PrivateChat với A.
- Vấn đề ở đây, sau khi khởi tạo, in tin nhắn lên thành công, nhưng PrivateChat với A lại not Responding ????



3. Code:

- frmClient là form chính của Client: có biến toàn cục
Mã:
private
Mã:
ServerConnect _serverConnect;

        // Sự kiện double click vào ListUser
privatevoid lbUser_DoubleClick(object sender, EventArgs e){
 string user = lbUser.SelectedItem.ToString();
 if (!user.Equals(tbUser.Text)){
_serverConnect.ExecutePrivateList(user);
}
}
- Class ServerConnect: điều khiển mọi hoạt động vào ra của dữ liệu và update dữ liệu cho frmClient. Nó chứa các thuộc tính:

Mã:
 // IPserver va USERprivatestring _ipServer;privatestring _user; // Điều khiển clientprivateSocket _client; // Điều khiển frmClientprivatefrmClient _frmClient; // Cac LuồngprivateStreamReader _reader;privateNetworkStream _stream;privateStreamWriter _writer;privatebool _run = true; //private bool _kick = false;// THREADprivateThread t;publicbool Connected = false;// Các form PrivateChatpublicDictionary<String, frmPrivateChat> ListPrivateUser { get; set; }
- Streamdata:

Mã:
while (_run) {     data = GetInfor(); // Hàm nhận string từ server     if (data.Equals("PRIVATE")) {        string fromUser = GetInfor(); // Lấy tên của User gửi tin         string mess = GetInfor(); // Lấy tin nhắn         ExecutePrivateList(fromUser); // Xử lý form PrivateChat với fromUser         ListPrivateUser[fromUser].UpdateTbChat(mess); // Cập nhật tin nhắn vào TextBoxChat của  form PrivateChat        }    }}
<font color="blue">- Hàm xử lý Các form PrivateChat


Mã:
 publicvoid ExecutePrivateList(string userSelected) {    if (!userSelected.Equals(_user)) {        if (ListPrivateUser.ContainsKey(userSelected)) {        ListPrivateUser[userSelected].Focus();    } else {        ListPrivateUser.Add(userSelected, newfrmPrivateChat(userSelected, this));        ListPrivateUser[userSelected].Show(); // Lỗi ở đây        }    }}
=====> Lỗi ở lệnh <font color="red">ListPrivateUser[userSelected].Show();


- Ai có thể cho mình cách khắc phục không ???
- source code trong phần đính kèm</font></font></font>