I have come across a weird scenario where the execution of a delegate continues even after the scope ends. I have also used GC.collect() at last but even it didn't work out.
I was using something related to selenium which keep executing till last, But You can print count.
Here I want to know the reason that why It keeps on executing the code even when it goes out of scope. Here I meant automationActions, delAutomationAction go out of scope
class OptimixAutomation
{
    public delegate void DelAutomationAction(ExeActions actionId);
    static void Main(string[] args)
    {
        int numberOfInstances = Convert.ToInt32(ConfigurationManager.AppSettings["NumberOfInstances"]);
        ExeActions actionId = (ExeActions)Convert.ToInt32(ConfigurationManager.AppSettings["ActionId"]);
        for (int i = 0; i < numberOfInstances; i++)
        {
            AutomationActions automationActions = new AutomationActions();
            DelAutomationAction delAutomationAction = new DelAutomationAction(automationActions.Login);       
            try
            {
                delAutomationAction.BeginInvoke(actionId: actionId, callback: null, @object: null);
            }
            catch (Exception e)
            {
            }
            Thread.Sleep(10000);
        }
        Console.ReadKey();
    }
}