async / await由Expression Encoder Screen Capture破坏

时间:2017-11-30 17:00:43

标签: c# .net command-line async-await microsoft-expression

我正在尝试在控制台应用程序中调用Expression Encoder ScreenCapture。我可以录制屏幕,但我发现它正在打破异步/等待。

在下面的代码中,除非“新的ScreenCaptureJob()”被注释掉,否则“await Task.Delay()”将不会返回。我猜屏幕捕获库可能正在创建一个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 个答案:

没有答案