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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 00:56   #1
divers
 
Регистрация: 17.04.2010
Сообщений: 7
По умолчанию Thread и элементы формы.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.IO;

namespace tcpserver
{
    
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }


      

        public class Server // класс сервера.
        {
            public RichTextBox richTextBox3;
            private int LocalPort;
            private Thread ServThread; // экземпляр потока
            TcpListener Listener; // листенер
            public Socket ClientSock;


            public delegate void UpdateTextCallback(string text);

            private void UpdateText(string text)
            {
                // Set the textbox text.
                //lock (richTextBox3);
                richTextBox3.Text = text;
            }
           

            public void Create(int port)
            {
                LocalPort = port;
                ServThread = new Thread(()=>ServStart(ClientSock));
                ServThread.Start(); // запустили поток. Стартовая функция – 
                // ServStart, как видно выше
               
            }

            public void Close() // Закрыть сервер
            {
                Listener.Stop();
                ServThread.Abort();
                return;
            }



            public void ServStart(Socket ClientSock)
            {
                byte[] cldata = new byte[1024]; // буфер данных
                Listener = new TcpListener(LocalPort);
                Listener.Start(); // начали слушать
                int i = 0;
 
                try
                {
                     ClientSock = Listener.AcceptSocket(); // пробуем принять 
                    // клиента
                }
                catch
                {
                    ServThread.Abort(); // нет – жаль(
                    return;
                }
                
                    while (ClientSock.Connected)
                    {
                        try
                        {
                            i= ClientSock.Receive(cldata); // попытка чтения 
                            // данных
                            
                        }
                        catch
                        {
                   
                        }

                       // lock (richTextBox3)
                        {
                            richTextBox3.BeginInvoke(new UpdateTextCallback(this.UpdateText),
                            new object[] { "<<" + Encoding.ASCII.GetString(cldata).Trim() });  //Тут ошибка
                           
                        }
                }
            }
        }

        private void сетиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 _myForm = new Form2();
            _myForm.ShowDialog();
        }

        public void button1_Click(object sender, EventArgs e)
        {
            
            int port;
            
            try
            {
                StreamReader pt = new StreamReader("c://pts.txt"); //считываем из файла введенный IP и порт
                port = Convert.ToInt32(pt.ReadLine());
            }
            catch
            {
                System.Windows.Forms.MessageBox.Show("Ошибка чтения из файла");
                return;
            }
            
            Server serv = new Server();

            try
            {
                serv.Create(port);
            }
            catch
            {
                System.Windows.Forms.MessageBox.Show("Ошибка создания сервера");
                return;
            }
           System.Windows.Forms.MessageBox.Show("Сервер успешно создан." + " " + "Порт:" + port);
        }

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }


    }
}

При получении сообщения из клиента, выскакивает ошибка что "В экземпляре объекта не задана ссылка на объект." Речь я так понимаю про richTextBox3.
http://blogs.msdn.com/csharpfaq/arch.../17/91685.aspx делаю по этой инструкции.
divers вне форума Ответить с цитированием
Старый 20.04.2010, 11:12   #2
divers
 
Регистрация: 17.04.2010
Сообщений: 7
По умолчанию

Бонус в 50 яд тому кто поможет!
divers вне форума Ответить с цитированием
Старый 20.04.2010, 13:14   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

Код:
"В экземпляре объекта не задана ссылка на объект." Речь я так понимаю про richTextBox3.
удивительно, объект нигде не создавался, вылетает соответствующая ошибка, в чем же может быть дело?)
public RichTextBox richTextBox3 = new RichTextBox();
m0nax вне форума Ответить с цитированием
Старый 20.04.2010, 17:52   #4
divers
 
Регистрация: 17.04.2010
Сообщений: 7
По умолчанию

Цитата:
Сообщение от m0nax Посмотреть сообщение
Код:
"В экземпляре объекта не задана ссылка на объект." Речь я так понимаю про richTextBox3.
удивительно, объект нигде не создавался, вылетает соответствующая ошибка, в чем же может быть дело?)
public RichTextBox richTextBox3 = new RichTextBox();
Писать то мне надо не в новом экземпляре, а в том который уже на форме
divers вне форума Ответить с цитированием
Старый 20.04.2010, 18:56   #5
divers
 
Регистрация: 17.04.2010
Сообщений: 7
По умолчанию

public Server(RichTextBox m_richTextBox)
{
richTextBox3 = m_richTextBox;
}
Ответ на мой вопрос)
divers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Thread. проблемы с работой потока. Моментально исчезают созданные в потоке формы. Casper-SC Общие вопросы .NET 3 24.04.2010 12:28
Элементы формы в массив boris-blade Общие вопросы .NET 1 01.04.2010 18:52
Thread Cpluser Общие вопросы .NET 6 30.03.2010 23:32
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Проблема с Thread Arnezami Общие вопросы .NET 2 04.10.2009 22:08