2016-06-15 3 views
0

Я просто хотел использовать код от this thread (первый пост), чтобы что-то проверить, я не очень хорошо знаком с C#, но он разбился, когда пакет отправлен на сервер в следующей строке:EventHandler отсутствует, не знаю, как инициализировать

NewMessageReceived(this, new MyMessageArgs(bytes));

со следующим сообщением об ошибке:

System.NullReferenceException: Object reference not set to an instance of an object

Я думаю, потому что NewMessageReceived не инициализирован, но как мне это сделать? Кто-нибудь может мне помочь? Я не могу найти полезные советы для EventHandlers на C#.

Заранее спасибо.

+0

Если никто не подписался на 'NewMessageReceived', обработчик будет' null'. Таким образом, перед вызовом вам нужно выполнить null check 'NewMessageReceived'. Для обеспечения безопасности потоков, предотвращая ситуации, когда обработчик может стать нулевым после проверки и перед вызовом, сначала сохраните обработчик события в локальном: «var tempEvent = NewMessageReceived; if (tempEvent! = null) tempEvent (это новый MyMessageArgs (байты)); ' –

+0

Отладка, чтобы определить, содержит ли байты нулевую ссылку. – JDupont

ответ

1

Для участия в мероприятии должно быть не менее 1 подписчика. Сначала поставьте нулевую проверку перед вызовом.

if (NewMessageReceived != null) 
{ 
    NewMessageReceived(this, new MyMessageArgs(bytes)); 
}