Функция обратного вызова - PullRequest
5 голосов
/ 12 марта 2009

У меня есть метод funct, который я хочу использовать в качестве функции обратного вызова, когда я использую метод сокета существующего получения в c #.

s.BeginReceive(buffer, 0, buffer.Length, System.Net.Sockets.SocketFlags.None,
               new AsyncCallback(funct), null);

Получаемая ошибка:

Нет перегрузки для 'funct' соответствует делегату 'System.AsyncCallback'

В чем здесь проблема?

Ответы [ 4 ]

6 голосов
/ 12 марта 2009

«funct» должен быть методом со следующей сигнатурой:

void funct(IAsyncResult ar) { }
2 голосов
/ 12 марта 2009

Вы не можете просто использовать любой метод для вашего обратного вызова. Функция должна иметь определенную подпись (список параметров).

1 голос
/ 12 марта 2009

что такое функция? это делегат? если это так, его подпись несовместима с делегатом AsyncCallback.

Функция должна быть похожа на эту:

void SomeMethod(IAsyncResult ar)
0 голосов
/ 12 марта 2009

Как выглядит ваша подпись метода funct?

Возвращает ли оно пустоту?

Имеет ли он ровно один параметр типа IAsyncResult?

Другими словами, соответствует ли ваш метод funct делегату Asynccallback ?

...