Home > Article > Backend Development > Graphical code example of asynchronous call of c# delegate
Asynchronous calls of delegates
Sometimes, if you want the delegate to complete a complex and time-consuming task When performing tasks, synchronous calling is not a good choice, because users will face boring time consumption and long (relatively speaking)'s waiting. At this time, the asynchronous call of the delegate shows its advantages. The asynchronous call of the delegate C# is also encapsulated, through beginInvoke and endInvke to complete. An example is given below.
1. ## defines a delegate,myDelegate
##2. An event is defined for external subscription3. ##Increment
, test field4. doIt method,
increment will be incremented every time it is called, when the value is 5 When , the event is called asynchronously The key point is this code: ##IAsyncResult result = this.callBack.BeginInvoke
(new AsyncCallback(
(ia) => {
MessageBox.Show("completed");
AsyncResult ar = (AsyncResult)ia;
MyDelegate md = ar.AsyncDelegate as MyDelegate;
int r = md.EndInvoke(ia);
MessageBox.Show(r.ToString() + ia.AsyncState);
}), "message");
MessageBox.Show("begin invoke");
BeginInvoke
The function contains four parameters: AsyncCallback
Object: This parameter means to tell it what to do next when the callback is completed, so you need to pass it a method.
new AsyncCallback(
Receive a method here, here I used lambdaExpression)
. ObjectObject: The parameters to be passed to the method called when the callback ends. AsyncResult ar = (AsyncResult)ia;////Get the incoming IasyncResult and convert it into an AsyncResult object MyDelegate md = ar.AsyncDelegate as MyDelegate;////Get callBackObject int r = md.EndInvoke(ia);////End the delegate call and get the return value MessageBox.Show(r.ToString() + ia.AsyncState);////Verify whether the return value is obtained ##OK Now that the asynchronous delegation has been defined, the next step is to call: Code description: ##Newatimer and a asyntroniseDelegate object. Subscribe to the callBack event. At the end of the method, a 1 is returned. . Use timer to complete the cumulative operation of increment, Accumulate 1 every second. When increment accumulates to 5, callbackThe event is triggered. At this time, it is asked to perform a very complex task, looping 10 billion times. After running, you will see ## prompt box, followed by # #, after about 2-3 seconds the prompt box appears, and then and ## (visible, asynchronous call Finally, we successfully obtained the return value of the method) The above is the asynchronous call of the c# delegate Contents of graphic code examples, please pay attention to the PHP Chinese website (www.php.cn) for more related content!