Wait for QueueUserWorkItem to Complete
You could use events to sync. Like this: private static ManualResetEvent resetEvent = new ManualResetEvent(false); public static void Main() { ThreadPool.QueueUserWorkItem(arg => DoWork()); resetEvent.WaitOne(); } public static void DoWork() { Thread.Sleep(5000); resetEvent.Set(); } If you don’t want to embed event set into your method, you could do something like this: var resetEvent = new ManualResetEvent(false); … Read more