private static void Load(string settingsFileName)
        {
            var settings = new DispatcherSettings();

            try
            {
                //System.Threading.Thread.Sleep(3000);//DEBUG

                if (File.Exists(settingsFileName))
                {
                    using (var stream = new FileStream(settingsFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                        settings.LoadFrom(stream);
                }
                else
                {
                    var errorMessage = String.Format("Invalid script file: {0}", settingsFileName);
                    Log.Info(errorMessage);
                    Console.WriteLine(errorMessage);
                    return;
                }

                settings.Validate();

                Dispatcher = new Dispatcher();
                Dispatcher.Disposed += (s, e) =>
                {
                    Environment.Exit(0);
                };

                Dispatcher.Initialize(settings);
            }
            catch (Exception ex)
            {
                var errorMessage = String.Format("Could not load Computational Unit for {0}!", settings.DispatcherId);
                Log.Error(ex, errorMessage);
                Console.WriteLine(errorMessage);
                Environment.Exit(0);
            }
        }
        protected override void LaunchComputationalUnit(DispatcherSettings settings)
        {
            var dispatcher = new Dispatcher();
            dispatcher.Initialize(settings);

            /*
             * Atention: 
             * These dispatcher continue to live after the InProcessDispatcherLauncher is disposed
             * They will be disposed only after they receive a poison pill
             */
        }