The correct way to Fire-and-Forget an asynchronous delegate

asynchronous, c#

Solution

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.

Problem

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?

Original source

Related problems