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-A và Person-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ã:
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>
View more random threads:
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...