我正在使用一个控制台应用程序作为概念证明,以及获取异步返回值的新需求.
我想我需要在main方法中使用Task.WaitAll()
,以避免需要异步"main()"方法,而这是非法的.
我现在一直在试图找出一个重载,它允许我使用泛型,或者只返回一个我可以强制转换的对象,但是在Main()中.
我正在使用一个控制台应用程序作为概念证明,以及获取异步返回值的新需求.
我想我需要在main方法中使用Task.WaitAll()
,以避免需要异步"main()"方法,而这是非法的.
我现在一直在试图找出一个重载,它允许我使用泛型,或者只返回一个我可以强制转换的对象,但是在Main()中.
你不会从Task.WaitAll
得到一个返回值.您只能使用它来等待多个任务的完成,然后从任务本身获取返回值.
var task1 = GetAsync(1);
var task2 = GetAsync(2);
Task.WaitAll(task1, task2);
var result1 = task1.Result;
var result2 = task2.Result;
如果你只有一个Task
,就使用Result
属性.如果任务尚未完成,它将返回您的值并阻止调用线程:
var task = GetAsync(3);
var result = task.Result;
在异步任务上同步等待(阻塞)通常不是一个好主意("异步上同步"),但我想这对POC来说没问题.