private void Run() { var eventProvider = new EventProvider(); eventProvider.Event += HandleEvent; Console.WriteLine("subscribed"); var unsubscribe = new Task(() => { eventProvider.Event -= HandleEvent; Console.WriteLine("unsubscribed"); }); var fireEvent = new Task(() => eventProvider.FireEvent()); fireEvent.Start(); unsubscribe.Start(); Task.WaitAll(fireEvent, unsubscribe); Console.ReadLine(); }