c # UDP EndReceive () данные становятся нулевыми при использовании - PullRequest
0 голосов
/ 27 сентября 2011

Это странно, и я не могу найти кого-то еще с этой проблемой, поэтому я предполагаю, что я сумасшедший. Буду очень признателен за помощь!

Я использую методы BeginReceive () / EndReceive () в C # UdpClient для реализации асинхронного чтения. Я начинаю читать с:

void startReading() {
  udpClient.BeginReceive(new AsynchCallback(asynchRead), null);
}

Метод asynchRead () выглядит следующим образом:

void asynchRead(IAsynchResult result) {
  nextData = udpClient.EndReceive(result, ref anyIPEndPoint);
}

, где

private Byte[] nextData;

и

IPEndPoint andIPEndPoint = new IPEndPoint(IPAddress.Any, 0);

являются глобальными.

Позже я пытаюсь использовать 'nextData' следующим образом:

anotherMethod(nextData);

, который дает мне необработанное исключение нулевого указателя в anotherMethod (). Пока я все еще отлаживаю, я вижу, что в «nextData» есть данные, прежде чем я вызываю anotherMethod (), но в anotherMethod () переданная переменная равна нулю.

Я что-то здесь не так делаю?

Большое спасибо.

Edit:

anotherMethod () частично выглядит так:

void anotherMethod(Byte[] dataBytes) {
  Byte[] data = new Byte[dataBytes.Length - 4];   <- this is where exception occurs
  ...
}
...