Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент Серверное приложение 
:(
    Опции темы
Impostr
Дата 18.10.2012, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.5.2012

Репутация: нет
Всего: нет



Пишу клиент-серверное приложение
код сервера
Код
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)

тогда приложение будет всегда находиться в "подвисшем" состоянии, пока не начнет получать данные, подскажите как избавиться от этих зависаний
PM MAIL   Вверх
Экскалупатор
Дата 18.10.2012, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



запусти ожидание в отдельном потоке. и вызывай из него остальную часть приложения по необходимости.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.