Why doesn't this C# 4.0 async method get called?
action, asynchronous, begininvoke, c#
Solution
Your program is terminating before the async method gets deployed in the `ThreadPool`. Keep your program open for a bit. Perhaps `Console.ReadKey()` at the end of `Main`?
Problem
I'm trying to write a really simple bit of async code. I have a void method that doesn't take any parameters, which is to be called from a Windows service. I want to kick it off async, so that the service doesn't have to hang around waiting for the method to finish. I created a very simple test app to make sure I was doing the coding right, but the async method just isn't being called. Anyone able to see what I've done wrong? I'm using .NET 4.0 by the way, so I can't use await (which would be a whole lot simpler!). Here is my entire test sample... ``` using System; using System.Threading; namespace AsyncCallback { internal class Program { private static void Main(string[] args) { Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - About to ask for stuff to be done"); new Action(DoStuff).BeginInvoke(ar => StuffDone(), null); Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Asked for stuff to be done"); } private static void StuffDone() { Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Stuff done"); } private static void DoStuff() { Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Starting to do stuff"); Thread.Sleep(1000); Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Ending doing stuff"); } } } ``` Thanks for any help you can give.