Пишу клиент-серверное приложение код сервера
| Код | try { byte[] data = new byte[Received.Length * 8192]; //массив байт для передачи сообщения server.Start(); int sec = Convert.ToInt32(DateTime.Now.Second.ToString()); int sec1 = Convert.ToInt32(DateTime.Now.Second.ToString());
while ((sec1 - sec) < 2) { if (!server.Pending()) { //scanner = false; } else { TcpClient client = new TcpClient(); client = server.AcceptTcpClient(); //получение информации от клиента NetworkStream stream = client.GetStream(); int i; //_________________________________ПОЛУЧЕНИЕ И ОТПРАВКА ДАННЫХ______________ //принимаем данные от клиента пока не дойдем до конца. data = new Byte[8192]; // масив для хранения принятых данных String responseData = String.Empty; Int32 bytes = stream.Read(data, 0, data.Length); // получение данных в bytes responseData = System.Text.Encoding.Unicode.GetString(data, 0, bytes); // перевод в строку // разбиение строки на массив строк
String[] Received_line = responseData.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < Received_line.Length; j++) { Received[j] = Convert.ToString(Received_line[j]); } DataRow New_Applications = database1DataSet.Aapplication_File.NewRow(); //описываем созданую строку по параметрам которые созданы в таблице New_Applications["Заказщик"] = Received[1]; New_Applications["Дата"] = Received[0]; New_Applications["Предприятие"] = Received[2]; New_Applications["СутьЗаявки"] = Received[3]; New_Applications["Пример"] = Received[4]; //записать строку database1DataSet.Aapplication_File.Rows.Add(New_Applications); aapplication_FileTableAdapter.Update(database1DataSet.Aapplication_File); label6.Text = "Заявка добавленна!"; } sec1 = Convert.ToInt32(DateTime.Now.Second.ToString()); } server.Stop(); //получили данные в масиве, разделяем его по переменных label1.Text = ""; } catch { ; } } |
Проблема в том, что при таком решении приложение наглухо зависает, если параллельно ему открыть еще что то, если же убрать строчку
| Код | while ((sec1 - sec) < 2) |
тогда приложение будет всегда находиться в "подвисшем" состоянии, пока не начнет получать данные, подскажите как избавиться от этих зависаний |