Exemple #1
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);
        }
Exemple #2
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();
        }
		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);
		}
		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();
		}