async/await прервано захватом экрана Expression Encoder

Я пытаюсь вызвать Expression Encoder ScreenCapture в консольном приложении. Я могу записать экран, но я обнаружил, что он прерывает асинхронное ожидание.

В приведенном ниже коде "await Task.Delay()" не вернется, если "new ScreenCaptureJob()" не будет закомментировано. Я предполагаю, что библиотека захвата экрана может создавать очередь событий GUI или что-то в фоновом режиме, что может мешать async-await.

Обратите внимание, что настоящее приложение выполняет настоящую асинхронную / ожидающую работу, поэтому его нельзя заменить на Thread.Sleep.

Есть идеи, как это исправить?

using Microsoft.Expression.Encoder.ScreenCapture;
using Microsoft.Extensions.CommandLineUtils;
using System;
using System.IO;
using System.IO.Pipes;
using System.Threading;
using System.Threading.Tasks;

namespace ScreenRecorder
{
    class Program
    {
        static void Main(string[] args)
        {
            var app = new CommandLineApplication();

            app.OnExecute(async () =>
            {
                var scj = new ScreenCaptureJob();

                Console.WriteLine("Being wait");

                await Task.Delay(50);

                Console.WriteLine("End wait");

                return 0;
            });

            app.Execute(args);
        }
    }
}

0 ответов

Другие вопросы по тегам