פורסם 2007 בספטמבר 418 שנים טוב אז ככה,בניתי תוכנת צ'אטים, ובלקיינט השתמשתי ב TcpClient,עכשי ובשביל לקבל response מהשרת השתמשתי בת'ראד חדש עם לולאה,זה עובד מצוין והכל, אבל הבעיה שיש קטע שאני רוצה להוסיף פריט ל ListBox, אבל כשאני מנסה להוסיף הת'ראד פשוט נתקע..הינה הקוד: public static void GetReq() { while (true) { try { // Get a client stream for reading and writing. // Stream stream = client.GetStream(); NetworkStream stream = client.GetStream(); // Receive the TcpServer.response. // Buffer to store the response bytes. Byte[] data = new Byte[256]; // String to store the response ASCII representation. String responseData = String.Empty; // Read the first batch of the TcpServer response bytes. Int32 bytes = stream.Read(data, 0, data.Length); responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); if (responseData == "-kill") MessageBox.Show("Disconnected: Server shutting down"); if (responseData.Contains("-addnick")) { char[] delimiterChars = { ':' }; string[] nick = responseData.Split(delimiterChars); lst_users.Items.Add(nick[1]); } MessageBox.Show("Client received: " + responseData); } catch { } } }מה אני צריך לעשות כדי שזה יפעל?
פורסם 2007 בספטמבר 418 שנים היי בומר, הקוד הבעייתי שלך הוא הקטע הבא. if (responseData.Contains("-addnick")) { char[] delimiterChars = { ':' }; string[] nick = responseData.Split(delimiterChars); lst_users.Items.Add(nick[1]); }במקום השורה של ההוספה כמו שעשית אתה צריך לעשות את הדבר הבא (בכל תוכנית שתבנה רק הת'רד המרכזי או זה שבחרת בו לטפל ב GUI הוא היחידי שיכול לטפל ב GUI)this.Invoke(new MethodInvoker(delegate() { lst_users.Items.Add(nick[1]); }));שים לב ששמתי את הכול בשורה אחת, ניתן לפצל זאת לכמה שורות ע"יהקוד הבא(למקרה שיש יותר מסתם להוסיף משתמש 1) if (responseData.Contains("-addnick")) { char[] delimiterChars = { ':' }; string[] nick = responseData.Split(delimiterChars); this.Invoke(new MethodInvoker(add_user); } public void add_user()// the function has to return void and cannot accept parameters. { lst_users.Items.Add(nick[1]); }
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.