我正在尝试在控制台应用程序中调用 Expression Encoder ScreenCapture。我可以录制屏幕,但我发现它正在破坏异步/等待。
在下面的代码中,“await Task.Delay()”将不会返回,除非“new ScreenCaptureJob()”被注释掉。我猜屏幕捕获库可能正在创建一个 GUI 事件队列或在后台可能会干扰异步等待的东西。
请注意,真正的应用程序正在执行真正的异步/等待工作,因此不能用 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);
}
}
}