Из некоторой формы вызывается метод SetConnection, который соединятся с сервером и , если ответ пришел верный (не "FAIL"), то нужно отобразить форму Display. А она не отображается (((
Код | public void SetConnection(Form form) { currentForm = form; try { client = new TcpClient(); client.Connect("localhost", 5000);
output = client.GetStream();
writer = new BinaryWriter(output); reader = new BinaryReader(output); byte[] bt = SerializationHelp.ConvertPersonToByteArray(reqData); writer.Write(bt.Length); writer.Write(bt);
int bytesSize = reader.ReadInt32(); reqData = SerializationHelp.ConvertByteArrayToPerson(reader.ReadBytes(bytesSize));
if (reqData.SendMessage == "FAIL" && reqData.DoInsert) { MessageBox.Show("Such login or password exist"); return; } else if (reqData.SendMessage == "FAIL" && !reqData.DoInsert) { MessageBox.Show("Incorrect login or password"); return; }
/********************** * окно отображается, но остается белым. * Как избавиться? * Проблема в цикле. Если его удаляю, то все работает. * НО мне надо поддерживать соединение. * ***********************/ currentForm.Close(); Display display = new Display(); display.Show(); while (client.Connected) { ResieveMessage(); } } catch (Exception error) { MessageBox.Show(error.ToString()); } finally { if (client.Connected) { writer.Close(); output.Close(); client.Close(); } } }
private void ResieveMessage() { int bytesSize = reader.ReadInt32(); reqData = SerializationHelp.ConvertByteArrayToPerson(reader.ReadBytes(bytesSize)); }
|
|