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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с отображением формы 
V
    Опции темы
andDavid
Дата 18.1.2011, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Из некоторой формы вызывается метод 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));
        }


Это сообщение отредактировал(а) andDavid - 18.1.2011, 15:32
PM MAIL   Вверх
freem4n
Дата 18.1.2011, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Насколько я понял твой код то сначала закрываешь текущую форму а потом пытаешься отобразить новую, но это никогда не получится т.к. код за методом Close() просто не выполнится.
PM MAIL WWW ICQ MSN   Вверх
andDavid
Дата 18.1.2011, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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


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

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


 




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


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

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