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:
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]);
}
La funzione precedente viene attivata da questo codice:
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);
}
}
Penso che ci sia qualche problema con il loop che riceve messaggi...
ma non ho idea di come metterlo in pausa...