In .NET 4.5 running async code was made easier than ever with async. I already talk a little about this new functionality, but I felt need to talk a little bit about some asycn methods that returns Task or (Task) and the async methods that returns void.
If we have an async method with the following definition:
In contrast with this definition, if we have the following definition:
Usually, an async method returns void when we want to define an event handler or to override void methods. Using this syntax it is very easy to call from event handler async methods.When you want to define a library that executes async calls or to define some helper methods you should always return Task or Task.
Also, when you work with async methods don’t forget to start them as soon as possible. I saw some async code, where the user defined some async methods and only at the end of an action he begins to execute these actions. If you have the possibility to start an async action sooner, than do it. In this you can reduce the execution time of your action. Because you can wait an async method multiple times, nothing will happen if you try to wait more than one time an action.
If we have an async method with the following definition:
public async Task<string> DoSomeActionAsync(…) { … }
In this case this method can be executed async and the method can be awaited. The user can wait until the action is executed. After the action is executed, the control is given back to code that waited the action to end. This action can start delegate asynchronous work.In contrast with this definition, if we have the following definition:
public async void DoSomeActionAsync (…) { … }
This action cannot be awaited. When the user calls this method is a call of type fire and forget. The code that made the call will not be notified when the action was finished. Because of this, each call of this type start a separate independent flow.Usually, an async method returns void when we want to define an event handler or to override void methods. Using this syntax it is very easy to call from event handler async methods.When you want to define a library that executes async calls or to define some helper methods you should always return Task or Task
Also, when you work with async methods don’t forget to start them as soon as possible. I saw some async code, where the user defined some async methods and only at the end of an action he begins to execute these actions. If you have the possibility to start an async action sooner, than do it. In this you can reduce the execution time of your action. Because you can wait an async method multiple times, nothing will happen if you try to wait more than one time an action.
Comments
Post a Comment