void OnCompileFinished(ExpressionCompilerJob job) { if (!Enabled || job.UserData != (IntPtr)m_MostRecentUndoEntryId) { return; } if (job.Error == null) { SetPrevFinishedJob(job); m_CompileResultHandling = ECompileResultHandling.Success; } else { switch (m_CompileResultHandling) { case ECompileResultHandling.Success: m_DelayedCompileErrorJob = job; m_CompileResultHandling = ECompileResultHandling.DelayedError; UpdateDelayedCompileErrorDeadline(); break; case ECompileResultHandling.DelayedError: m_DelayedCompileErrorJob = job; break; case ECompileResultHandling.Error: SetPrevFinishedJob(job); break; } } }
void ErrorRecompileTimer_Tick(object sender, EventArgs e) { if (!Enabled || m_CompileResultHandling != ECompileResultHandling.DelayedError) { return; } if (DateTime.Now < m_DelayedCompileErrorDeadline) { return; } SetPrevFinishedJob(m_DelayedCompileErrorJob); m_CompileResultHandling = ECompileResultHandling.Error; }
void Enable() { if (Enabled) { return; } m_CompilerThread = new ExpressionCompilerThread(); m_ErrorRecompileTimer.Start(); m_ExecFuncForceReEvaluateTimer.Start(); m_PrevFinishedJob = null; m_CompileResultHandling = ECompileResultHandling.Success; StartCompilation(-1); }