void Disable()
 {
     if (!Enabled)
     {
         return;
     }
     m_ErrorRecompileTimer.Stop();
     m_ExecFuncForceReEvaluateTimer.Stop();
     m_PrevFinishedJob = null;
     m_CompilerThread.Dispose();
     m_CompilerThread = null;
     UnderlineData    = new UnderlineDataContainer();
 }
        void Enable()
        {
            if (Enabled)
            {
                return;
            }
            m_CompilerThread = new ExpressionCompilerThread();
            m_ErrorRecompileTimer.Start();
            m_ExecFuncForceReEvaluateTimer.Start();

            m_PrevFinishedJob       = null;
            m_CompileResultHandling = ECompileResultHandling.Success;
            StartCompilation(-1);
        }
Пример #3
0
        protected override void Dispose(bool disposing)
        {
            Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Dispose() of: {0}", this.ToString()));
            Debug.Assert(disposing);

            if (m_ExpressionCompilerThread != null)
            {
                m_ExpressionCompilerThread.Dispose();
                m_ExpressionCompilerThread = null;
            }

            PackageGlobals.DeinitInstance();

            if (m_UpdateTimer != null)
            {
                m_UpdateTimer.Stop();
            }

            IVsSolution vs_solution = (IVsSolution)GetService(typeof(IVsSolution));

            if (vs_solution != null)
            {
                vs_solution.UnadviseSolutionEvents(m_SolutionEventsCookie);
            }

            IVsDebugger debugger = (IVsDebugger)GetService(typeof(IVsDebugger));

            if (debugger != null)
            {
                debugger.UnadviseDebuggerEvents(m_DebuggerEventsCookie);
            }

            if (m_VSMainWindow != null)
            {
                m_VSMainWindow.Deinitialize();
                m_VSMainWindow = null;
            }

            base.Dispose(disposing);
        }
Пример #4
0
        private void DelayedInit()
        {
            DTE dte = (DTE)GetService(typeof(DTE));

            if (dte == null)
            {
                // Usually this branch never executes but I want to make sure...
                PackageGlobals.BeginInvokeOnUIThread(DelayedInit);
                return;
            }

            m_VSMainWindow = new VSMainWindow();
            m_VSMainWindow.Initialize((IntPtr)dte.MainWindow.HWnd);
            m_VSMainWindow.OnWindowTitleUpdateNeeded += m_VSMainWindow_OnWindowTitleUpdateNeeded;

            m_UpdateTimer          = new System.Windows.Forms.Timer();
            m_UpdateTimer.Tick    += UpdateTimer_Tick;
            m_UpdateTimer.Interval = UPDATE_PERIOD_MILLISECS;
            m_UpdateTimer.Start();

            IVsSolution vs_solution = (IVsSolution)GetService(typeof(IVsSolution));

            vs_solution.AdviseSolutionEvents(this, out m_SolutionEventsCookie);

            IVsDebugger debugger = (IVsDebugger)GetService(typeof(IVsDebugger));

            debugger.AdviseDebuggerEvents(this, out m_DebuggerEventsCookie);

            PackageGlobals.InitInstance(this);

            m_PrevVariableValues = PackageGlobals.Instance().CreateFreshEvalContext().VariableValues;

            m_ExpressionCompilerThread = new ExpressionCompilerThread();
            // During normal use the expression doesn't change except when configuring so a cache size of 1 does the job quite well.
            // Usually what changes is the variables.
            m_CompiledExpressionCache = new CompiledExpressionCache(PackageGlobals.Instance().ExecFuncEvaluator, PackageGlobals.Instance().CompileTimeConstants, 1);

            UpdateWindowTitle();
        }