private bool Stop(bool wait) { if (IsRunning && !_taskStopToken) { _taskStopToken = true; if (wait) { _frameCounterTimer.Change(Timeout.Infinite, SECOND_MS); _captureTask.Wait(); _captureTask = null; _windowCapture.Dispose(); _windowCapture = null; _windowHandle = IntPtr.Zero; IsRunning = false; } else { Task.Run(() => { Stop(true); }); } return(true); } return(false); }
public DotaWindowCapture(IntPtr windowHandle) { IsRunning = false; _windowHandle = windowHandle; _windowCapture = null; _captureTask = null; _taskStopToken = false; _frameCounter = 0; _frameCounterTimer = new Timer(FrameCountLoop, null, Timeout.Infinite, SECOND_MS); }
public bool Run() { if (!IsRunning) { _taskStopToken = false; _windowCapture = new WindowCapture(_windowHandle); _captureTask = Task.Factory.StartNew(CaptureLoop, TaskCreationOptions.LongRunning); _frameCounter = 0; _frameCounterTimer.Change(SECOND_MS, SECOND_MS); IsRunning = true; return(true); } return(false); }
internal DotaOcvWindowCaptureFrameCapturedEventArgs(WindowCapture windowCapture) { _windowCapture = windowCapture; }