Что такое обратный звонок?



Что такое обратный вызов и как он реализован в C#?

476   10  

10 ответов:

In Программирование обратный вызов исполняемый код это передается как аргумент на другой код.

-Википедия: обратный вызов (информатика)

в C#представители для этой цели. Они широко используются с событий, поскольку событие может автоматически вызывать ряд присоединенных делегатов (обработчиков событий).

Я только что встретил тебя,
И это безумие,
Но вот мой номер (делегат),
Так что если что-то случится (событие),
Позвони мне, может быть (обратный звонок)?

обратный вызов-это функция, которая будет вызвана, когда процесс выполнения конкретной задачи.

использование обратного вызова, как правило, в асинхронной логике.

чтобы создать обратный вызов в C#, необходимо сохранить адрес функции внутри переменной. Это достигается с помощью delegate или новая лямбда семантика Func или Action.

    public delegate void WorkCompletedCallBack(string result);

    public void DoWork(WorkCompletedCallBack callback)
    {
        callback("Hello world");
    }

    public void Test()
    {
        WorkCompletedCallBack callback = TestCallBack; // Notice that I am referencing a method without its parameter
        DoWork(callback);
    }

    public void TestCallBack(string result)
    {
        Console.WriteLine(result);
    }

в сегодняшнем C#, это может быть сделано с помощью лямбда, как:

    public void DoWork(Action<string> callback)
    {
        callback("Hello world");
    }

    public void Test()
    {
        DoWork((result) => Console.WriteLine(result));
    }

определение

A обратный звонок исполняемый код, который передается в качестве аргумента в другой код.

реализация

// Parent can Read
public class Parent
{
    public string Read(){ /*reads here*/ };
}

// Child need Info
public class Child
{
    private string information;
    // declare a Delegate
    delegate string GetInfo();
    // use an instance of the declared Delegate
    public GetInfo GetMeInformation;

    public void ObtainInfo()
    {
        // Child will use the Parent capabilities via the Delegate
        information = GetMeInformation();
    }
}

использование

Parent Peter = new Parent();
Child Johny = new Child();

// Tell Johny from where to obtain info
Johny.GetMeInformation = Peter.Read;

Johny.ObtainInfo(); // here Johny 'asks' Peter to read

ссылки

обратный вызов это указатель на функцию, который вы передаете в другой функции. Функция, которую вы вызываете, будет "обратный вызов" (выполнить) другую функцию, когда она будет завершена.

проверить этой ссылка.

Если вы ссылаетесь на ASP.Net обратные вызовы:

в модели по умолчанию для ASP.NET паутина страницы, пользователь взаимодействует со страницей и нажимает кнопку или выполняет другое действие, которое приводит к обратная передача. Страница и ее элементы управления создаются заново, код страницы выполняется дальше сервер и новая версия страница отображается в браузере. Однако, в некоторых ситуациях полезно для запуска серверного кода из клиента без выполнения обратная передача. Если клиентский скрипт на странице сохранении некоторых государственных информационных (например, значения локальных переменных), размещение страницы и получение новой его копия разрушает это состояние. Кроме того, страница обратной связи ввести обработка накладных расходов, которые могут уменьшиться производительность и заставить пользователя ждать для страницы, которая будет обработана и создан заново.

чтобы не потерять клиента и не нести нагрузку от сервер туда и обратно, вы можете закодировать ASP.NET веб-страница, так что он может выполнение обратных вызовов клиента. В клиенте обратный вызов, функция клиент-скрипт отправляет запрос в Ан ASP.NET паутина страница. На веб-странице выполняется измененная версию своего нормального жизненного цикла. Этот страница инициируется и ее элементы управления и создаются другие члены, а затем a вызывается специально помеченный метод. Этот метод выполняет обработку что вы закодировали, а затем возвращает a значение для браузера, которое можно прочитать другой функцией клиентского скрипта. На протяжении всего этого процесса, страница жить в браузере.

Источник:http://msdn.microsoft.com/en-us/library/ms178208.aspx

Если вы имеете в виду вызовы в код:

обратные вызовы часто делегируются методам, которые вызываются после завершения конкретной операции или выполнения под-действия. Вы часто найдете их в асинхронных операциях. Это принцип программирования, который вы можете найти практически в каждом язык кодирования.

дополнительная информация здесь:http://msdn.microsoft.com/en-us/library/ms173172.aspx

вероятно, не определение словаря, но обратный вызов обычно относится к функции, которая является внешней по отношению к определенному объекту, сохраняется и затем вызывается на определенное событие.

пример может быть, когда кнопка пользовательского интерфейса создается, он хранит ссылку на функцию, которая выполняет действие. Действие обрабатывается в другой части кода, но при нажатии кнопки вызывается обратный вызов и это вызывает действие.

в C#, а чем использовать термин "обратный вызов" использует "события" и "делегаты", и вы можете узнать больше о делегатах здесь.

Dedication to LightStriker:  
Sample Code:
class CallBackExample
{
    public delegate void MyNumber();
    public static void CallMeBack()
    {
        Console.WriteLine("He/She is calling you.  Pick your phone!:)");
        Console.Read();
    }
    public static void MetYourCrush(MyNumber number)
    {
        int j;
        Console.WriteLine("is she/he interested 0/1?:");
        var i = Console.ReadLine();
        if (int.TryParse(i, out j))
        {
            var interested = (j == 0) ? false : true;
            if (interested)//event
            {
                //call his/her number
                number();
            }
            else
            {
                Console.WriteLine("Nothing happened! :(");
                Console.Read();
            }
        }
    }
    static void Main(string[] args)
    {
        MyNumber number = Program.CallMeBack;
        Console.WriteLine("You have just met your crush and given your number");
        MetYourCrush(number);
        Console.Read();
        Console.Read();
    }       
}

Code Explanation:
I created the code to implement the funny explanation provided by    
LightStriker in the above one of the replies. We are passing 
delegate (number)   to a method (MetYourCrush). If the Interested
(event) occurs in the method (MetYourCrush) then it will call
the delegate (number) which was holding the reference of
CallMeBack method. So, the CallMeBack method will be called. 
Basically, we are passing delegate to call the callback method. 
Please let me know if you have any questions.

обратный вызов позволяет передавать исполняемый код в качестве аргумента в другой код. В C и C++ это реализуется как указатель на функцию. В .NET вы бы использовали делегат для управления указателями функций.

несколько применений включают сигнализацию ошибок и контроль того, действует ли функция или нет.

Википедия

обратный шаги работы:

1) мы должны реализовать ICallbackEventHandler интерфейс

2) зарегистрировать клиентский скрипт :

 String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
    String callbackScript = "function UseCallBack(arg, context)" + "{ " + cbReference + ";}";
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallBack", callbackScript, true);

1) из пользовательского интерфейса вызова Onclient нажмите кнопку вызова функции javascript для EX: -builpopup(p1,p2,p3...)

var finalfield= p1, p2,p3; UseCallBack(finalfield, ""); данные от клиента передаются на сторону сервера с помощью UseCallBack

2) public void RaiseCallbackEvent(string eventArgument) в eventArgument мы получаем переданные данные //выполните некоторые операции на стороне сервера и передано в "callbackResult"

3) GetCallbackResult() // используя этот метод данные будут переданы клиенту (ReceiveServerData () функция) сторона

callbackResult

4) получить данные на стороне клиента: ReceiveServerData(text), в ответе текстового сервера, мы получим.

Comments

    Ничего не найдено.