//private string public Task TakeScreenshot() { var result = _ObsClient.TakeScreenshot(); //_Client. //_PostScreenshotTask = Task.Run(() => _Client.SendAsync("PostScreenshot", result)); _Client.SendAsync("PostScreenshot", clientStreamData(result)); return(Task.CompletedTask); async IAsyncEnumerable <string> clientStreamData(string imageData) { var sr = new StringReader(imageData); Debug.WriteLine($"ImageData ({imageData.Length}): " + imageData.Substring(imageData.Length - 20, 20)); var buffer = new char[2000]; while (true) { var lengthRead = sr.ReadBlock(buffer, 0, 2000); if (lengthRead == 0) { break; } yield return(new string(buffer, 0, lengthRead)); buffer = new char[2000]; } //After the for loop has completed and the local function exits the stream completion will be sent. } }
public async Task StartAsync(CancellationToken cancellationToken) { await _ObsClient.Connect(); if (string.IsNullOrEmpty(_Configuration["ObsTest"]) || !bool.Parse(_Configuration["ObsTest"])) { await _BotClient.Connect(); } else { var imgString = _ObsClient.TakeScreenshot(); var bytes = Convert.FromBase64String(imgString); File.WriteAllBytes("c:\\dev\\stream\\screenshots\\test.png", bytes); } }