Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Object reference not set to an instance of an object. - ???

3.2K
21 октября 2006 года
MasterKlass
47 / / 06.03.2005
Код:
public delegate void LineReceive(UserConnection Sender, string Data);

public class UserConnection{
...
public event LineReceive LineRecieved;
...
        private void StremReceiver(IAsyncResult ar)
        {
            Int32 BytesRead = 0;
            String strMess;

            try
            {
                // опять запираем поток
                lock (Client.GetStream())
                {
                    // заканчиваем асинхронное чтение
                    BytesRead = Client.GetStream().EndRead(ar);
                }
                // переводим полученные данные в кодировку UTF8 (типа чтоб русские буквы читались)
                strMess = Encoding.UTF8.GetString(readBuffer, 0, BytesRead - 1);
                // провоцируем появление события LineReceive (это для общения с главной программой)
                LineReceived(this, strMess);
                // и опять запираем
                lock (Client.GetStream())
                {
                    // и запускаем поток на чтение данных
                    Client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(StremReceiver), null);
                }
            }
            catch (Exception ex)
            {

            }

        }
}


а уже в коде формы

 
Код:
private void OnLineReceived(UserConnection Sender, String Data)
        {
            int i = 0;
            richTextBox1.Text = "new Connection";                  
        }


НО!

на LineRecieved выскакивает Object reference not set to an instance of an object.

Почему??? В примере от MS всё работает...
273
22 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
А ошибка выскакивает при обращении к чему?? К параметру Sender?? Просто при входе в функцию возникнуть ошибка не может (если только ты не забыл подписаться на событие).
3.2K
22 октября 2006 года
MasterKlass
47 / / 06.03.2005
http://www.gotdotnet.ru/Forums/Common/388259.aspx

смотрите сюда...
273
22 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
Дело в том что в MSDN написано, что instance-методы и поля не гарантируют поточной безопасности. Возможно, при подписывании необходимо заблокировать делегат.
P.S.: А что за пример от MS??
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог