public async Task CaptureStream_benchmark() { var manager = new ScreenCaptureManager(); var screen = manager.GetScreens().FirstOrDefault(); var tcs = new CancellationTokenSource(TimeSpan.FromSeconds(10)); var sw = Stopwatch.StartNew(); var count = 0; await foreach (var capture in manager.CaptureStream(screen, cancellationToken: tcs.Token)) { capture.Dispose(); count++; } sw.Stop(); Console.WriteLine($"Average: {(int)(sw.Elapsed.TotalMicroseconds() / count)} us"); Console.WriteLine($"FPS: {count/sw.Elapsed.TotalSeconds}"); }
public async Task Multiple_CaptureStream_should_throw() { var manager = new ScreenCaptureManager(); var screen = manager.GetScreens().FirstOrDefault(); var stream1 = manager.CaptureStream(screen); var enumerator = stream1.GetAsyncEnumerator(); Exception ex = null; try { var capture1 = await enumerator.MoveNextAsync(); var capture2 = await enumerator.MoveNextAsync(); } catch (ScreenCaptureException sce) { ex = sce; } ex.Should().BeOfType <ScreenCaptureException>(); }