public void ContextSwitch() { ContextSwitchNeeded = false; LastContextSwitchTime = PerformanceCounter.ElapsedMilliseconds; if (CurrentThread != null) { _coreManager.Reset(CurrentThread.HostThread); } CurrentThread = SelectedThread; if (CurrentThread != null) { long currentTime = PerformanceCounter.ElapsedMilliseconds; CurrentThread.TotalTimeRunning += currentTime - CurrentThread.LastScheduledTime; CurrentThread.LastScheduledTime = currentTime; _coreManager.Set(CurrentThread.HostThread); CurrentThread.Execute(); } }