Consider me rusty on the subject of asynchronous delegates.
If I want to call a method asynchronously, in a fire-and-forget style, is this an appropriate way to do it?
Action action = DoSomething;
action.BeginInvoke(action.EndInvoke, null);
The DoSomething()
method catches all exceptions and deals with them internally.
Is the call to EndInvoke
appropriate? Required?
Is there a clearer way to achieve the same behaviour?
The new way (in .NET 4) is to do this:
Task.Factory.StartNew(() => DoSomething());
The "old-school" way in .NET 3.5 is to use the ThreadPool
:
ThreadPool.QueueUserWorkItem(s => DoSomething());
If you prefer to use asynchronous delegates, then you should know that the call to EndInvoke
is necessary, even if you don't have any additional code you wish to execute on callback.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With