Ciao a tutti...
questa è la situazione:
Ho creato un client in C#.
Se lo avvio tramite visual studio, quindi in modalità debug funziona senza problemi.
Se invece lo avvio dall'eseguibile generato (quindi senza visual studio)
una volta connesso al server dopo circa 10 secondi il client va in crash dicendo che il programma va in out of memory.
(errore:System.OutOfMemoryException)
Credo che il problema sia in questo punto:
La funzione precedente viene attivata da questo codice:codice:private void ReceiveData(object client) { TcpClient tcpClient = (TcpClient)client; NetworkStream clientStream = tcpClient.GetStream(); byte[] message = new byte[tcpClient.Client.Available]; // da qui int bytesRead = 0; try { bytesRead = clientStream.Read(message, 0, tcpClient.Client.Available); } catch { } // a qui ASCIIEncoding encoder = new ASCIIEncoding(); System.Diagnostics.Debug.WriteLine(encoder.GetString(message, 0, bytesRead)); CommandString = (encoder.GetString(message, 0, bytesRead)); string[] split = CommandString.Split('/'); StartCommand(split[0], split[1]); }
Penso che ci sia qualche problema con il loop che riceve messaggi...codice:public void Connect() { try { LoginForm.log_listbox_ref.Items.Add("Connecting..."); IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("25.213.156.36"), 8001); Main.User.client.Connect(serverEndPoint); Main.User.listenThread = new Thread(new ThreadStart(ListenForServer)); Main.User.listenThread.Start(); LoginForm.log_listbox_ref.Items.Add("Connected"); } catch (Exception ex) { LoginForm.log_listbox_ref.Items.Add(ex.Message); } } private void ListenForServer() { while (true) { Thread clientThread = new Thread(new ParameterizedThreadStart(ReceiveData)); clientThread.Start(Main.User.client); } }
ma non ho idea di come metterlo in pausa...

Rispondi quotando
