public void OpenCapture(string logfile) { if(Running) return; m_Logfile = logfile; LoadProgress = 0.0f; InitException = null; m_Thread = Helpers.NewThread(new ThreadStart(this.RunThread)); m_Thread.Priority = ThreadPriority.Highest; m_Thread.Start(); while (m_Thread.IsAlive && !Running) ; }
private void RunThread() { try { ReplayRenderer renderer = CreateReplayRenderer(); if(renderer != null) { System.Diagnostics.Debug.WriteLine("Renderer created"); Running = true; m_current = null; while (Running) { lock (m_renderQueue) { if (m_renderQueue.Count > 0) { m_current = m_renderQueue[0]; m_renderQueue.RemoveAt(0); } } if(m_current == null) { m_WakeupEvent.WaitOne(10); continue; } if (m_current.method != null) { if (CatchExceptions) { try { m_current.method(renderer); } catch (Exception ex) { m_current.ex = ex; } } else { m_current.method(renderer); } } m_current.processed = true; m_current = null; } lock (m_renderQueue) { foreach (var cmd in m_renderQueue) cmd.processed = true; m_renderQueue.Clear(); } DestroyReplayRenderer(renderer); } } catch (ReplayCreateException ex) { InitException = ex; } }
public void ConnectToRemoteServer(RemoteHost host) { InitException = null; try { m_Remote = StaticExports.CreateRemoteServer(host.Hostname, 0); m_RemoteHost = host; m_RemoteHost.Connected = true; } catch (ReplayCreateException ex) { InitException = ex; } }