我一直在努力使用从另一个开发人员那里检索到的控制台应用程序。 客户端需要一个异步运行的控制台应用程序来确认调用者的执行(我猜在控制台中打印了一行)并让脚本随后运行。
static int batchId = 0;
static int requestId = 0;
static void Main(string[] args)
{
#if DEBUG
while (true)
{
// This method set our 2 var up above with value typed in the console. It's only for testing purpose
GetKeyTappedBis();
if (batchId > 0 && requestId > 0) break;
}
#else
SetArguments(args);
#endif
ServiceProviderFactory.ServiceProvider = new ServiceCollection()
// ...
.BuildServiceProvider();
Task.Run(async () =>
{
Console.WriteLine($"Batch n°{batchId} will be executed.");
await Application.Run(batchId, requestId);
});
}
我可能在理解异步执行时遇到一些困难。但我真的不明白为什么这段代码,当我尝试调试它时,我无法进入
Application.Run()
执行。除非我在 Console.ReadLine()
之后插入 Task.Run()
,然后它将执行我的方法。
在问这个问题之前我没有找到任何帮助。
你会挥手等待!如果您不等待它,您的主线程将在没有执行异步任务的情况下终止:
var t = Task.Run(....);
await t;