Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2009, 13:45   #1
NeveX
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 12
По умолчанию Проблема с выводом на экран

Уже где-то час долбусь с одной проблемой. Вод код проги:

PHP код:
namespace ClientServerApp
{
    public 
partial class _Default System.Web.UI.Page
    
{
        public 
_Default()
        {
            
thread = new Thread(StartConnection);
        }


        protected 
void Page_Load(object senderEventArgs e)
        {


        }

        protected 
void Button1_Click(object senderEventArgs e)
        {
            
write();
                        
        }

        protected 
void Button2_Click(object senderEventArgs e)
        {

            
thread.Start();

        }

        private 
string message;
        private 
BinaryReader reader;
        private 
BinaryWriter writer;
        private 
Thread thread;
        private 
NetworkStream stream;
        private 
TcpClient client;


        public 
void StartConnection()
        {
            
TextBox1.ReadOnly false;
            
query.ReadOnly false;
            
type("Function Initialized.  ");
            
client = new TcpClient();
            
client.Connect("localhost"150);
            
type("Connected.  ");

            
stream client.GetStream();
            
writer = new BinaryWriter(stream);
            
reader = new BinaryReader(stream);

            
type("GOT streams... going into cycle");

            do
            {

                try
                {
                    
message reader.ReadString();
                    
CConsole.Text += "\nSERVER>>>  " message;
                }
                catch (
Exception)
                {
                    
CConsole.Text "\nUnable to read the stream. Please reenter";
                    break;
                }


            } while (
message != "SERVER>>> TERMINATING");

            
CConsole.Text "Closed.";
            
writer.Close();
            
reader.Close();
            
client.Close();
        }

        public 
void write()
        {
            try
            {
                
writer.Write("\nSERVER>>>   ");
            }
            catch (
ArgumentNullException)
            {
                
CConsole.Text += "ArgumentNULL Exception!";
                return;
            }
            catch (
ObjectDisposedException)
            {
                
CConsole.Text += "ODE Exception";
                return;
            }
            catch (
NullReferenceException)
            {
                
CConsole.Text += "NR Exception";
                return;
            }

            
CConsole.Text += "Successefully submitted";


        }

        public 
void type(string info)
        {
            
            
this.query.Text += " " info;
        }
            
                    
              
    }


Проблема следующая: не выводится на экран ничего кроме Function Initialized. Дебагером тестил, там все нормально, то есть с самой программой проблем вроде нет, оно тупо проходит type и идет дальше как будто все выполнило. Что только не делал, даже type() сделал специально чтоб проверить, но оно все равно не работает. Буду благодарен если кто подскажет.
NeveX вне форума Ответить с цитированием
Старый 19.12.2009, 15:55   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

А вы проверяли что за объект - this.query.Text ?
MaTBeu вне форума Ответить с цитированием
Старый 19.12.2009, 16:11   #3
NeveX
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 12
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
А вы проверяли что за объект - this.query.Text ?
Да дело не в этом. this.query.text это я просто "шаманил". Можно написать к примеру просто query.text, ничего не изменится. Можно написать вместо type(string text) содержимое функции и опять же никакого эффекта...

query у меня это просто текстовое окно в бразуере(textbox) с (ID)=query. Если был бы виноват вывод то не выводилось бы ничего а так оно доходит до функции client.connect() а дальше ничего не пишет! До сих пор не знаю в чем проблема.

Последний раз редактировалось NeveX; 19.12.2009 в 16:15.
NeveX вне форума Ответить с цитированием
Старый 20.12.2009, 13:57   #4
NeveX
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 12
По умолчанию +++

Так, посидел разобрался. Теперь у меня мысли о том, что проблема в потоках. Вот как я немного переделал программу:


PHP код:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace 
ClientServerApp
{
    public 
partial class _Default System.Web.UI.Page
    
{
        
Thread thread2;
        public 
_Default()
        {

        }


        protected 
void Page_Load(object senderEventArgs e)
        {


        }

        protected 
void Button1_Click(object senderEventArgs e)
        {
            
write();
                        
        }

        protected 
void Button2_Click(object senderEventArgs e)
        {

            
InitClient();

        }

        private 
string message;
        private 
BinaryReader reader;
        private 
BinaryWriter writer;
        private 
Thread thread;
        private 
NetworkStream stream;
        private 
TcpClient client;

        public 
void InitClient()
        {
      
//      CConsole.ReadOnly = false;
      //      query.ReadOnly = false;
            
type("Function Initialized.  ");
            
type("12345");
            
client = new TcpClient();
            
client.Connect("localhost"155);
            
type("Connected.  ");


            
stream client.GetStream();
            
writer = new BinaryWriter(stream);
            
reader = new BinaryReader(stream);
            
writer.Write("Connecting() initialized...");
            
type("GOT streams... going into cycle");
            
thread = new Thread(StartListening);
            
thread.Start();


        }

        public 
void StartListening()
        {

            do
            {

                try
                {
                    
message reader.ReadString();
                    
CConsole.Text += "\nSERVER>>>  " message;
                }
                catch (
Exception)
                {
                    
CConsole.Text "\nUnable to read the stream. Please reenter";
                    break;
                }


            } while (
message != "SERVER>>> TERMINATING");

            
CConsole.Text "Closed.";
            
writer.Close();
            
reader.Close();
            
client.Close();
        }

        public 
void write()
        {
            
            try
            {
                
writer.Write("\nCLIENT>>>   ");
            }
            catch (
ArgumentNullException)
            {
                
CConsole.Text += "ArgumentNULL Exception!";
                return;
            }
            catch (
ObjectDisposedException)
            {
                
CConsole.Text += "ODE Exception";
                return;
            }
            catch (
NullReferenceException)
            {
                
CConsole.Text += "NR Exception";
                return;
            }

            
CConsole.Text += "Successefully submitted";

            
        }

        public 
void type(string info)
        {
            
            
CConsole.Text += info;
            
           

        }



    }

Тут уже другая ситуация: вся информация что есть в функции InitClient() отображается на экране верно, но как только функция назначает поток опять ничего не видно. Причем функция write() выдает NR Exception, хотя все прекрасно объявлено. Странно как-то.
NeveX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с выводом информацыи Betman Общие вопросы Delphi 2 29.10.2009 17:09
Проблема с чтением и выводом содержимого текстового файла на экран -=PascaL=- Помощь студентам 16 08.08.2009 07:13
проблема с выводом результата Nyutka PHP 2 16.04.2009 11:58
Проблема с выводом текста limon PHP 6 30.11.2008 20:03