Esempio n. 1
0
        private void method_19()
        {
            WaitCallback waitCallback = null;
            bool         flag         = false;

            Monitor.Enter(this.object_0, ref flag);
            try
            {
                Class126.Class174 @class = new Class126.Class174();
                try
                {
                    while (this.stack_0.Count > 0)
                    {
                        try
                        {
                            Class492 class2 = this.stack_0.Pop();
                            if (flag)
                            {
                                Monitor.Exit(this.object_0);
                                flag = false;
                            }
                            this.UpdateStep = class2.UpdateStep;
                            if (this.process_0 == null && !this.method_9())
                            {
                                throw new Exception(Class126.string_1);
                            }
                            if (!this.method_8(class2.method_0()))
                            {
                                throw new Exception(Class126.string_0);
                            }
                            if (class2.Action == Enum93.const_2)
                            {
                                if (waitCallback == null)
                                {
                                    waitCallback = new WaitCallback(this.method_20);
                                }
                                ThreadPool.UnsafeQueueUserWorkItem(waitCallback, null);
                                break;
                            }
                        }
                        finally
                        {
                            Monitor.Enter(this.object_0, ref flag);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ex.smethod_0();
                    try
                    {
                        if (this.process_0 != null && !this.process_0.HasExited)
                        {
                            this.process_0.Kill();
                        }
                    }
                    catch
                    {
                    }
                    this.process_0 = null;
                    this.stack_0.Clear();
                    if (this.eventHandler_4 != null)
                    {
                        this.eventHandler_4(this, new EventArgs38(new Class492(Enum28.const_0, this.UpdateStep, this.UpdaterExitedPrematurely_Title, ex.Message)));
                    }
                }
                @class.task_0 = Interlocked.Exchange <Task>(ref this.task_0, null);
                ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback(@class.method_0), null);
            }
            finally
            {
                if (flag)
                {
                    Monitor.Exit(this.object_0);
                    flag = false;
                }
            }
        }