【发布时间】:2020-05-26 22:13:33
【问题描述】:
我有一个简单的方法,它执行复杂的字符串操作并返回结果。可以看到,这个方法的返回类型是Task<string>。因此,我可以使用Task.FromResult(result) 来返回我的字符串的值。
public Task<string> ComplexOperation()
{
string result = // Do something complex
return Task.FromResult(result);
}
然后,我可以使用await 关键字来调用这个方法。
public static async Task Main(string[] args)
{
var myResult = await ComplexOperation();
}
因为我在等待CompelxOperation(),(等待任务完成返回)这个方法会异步运行吗?
【问题讨论】:
-
..你试过了吗? ;)
-
@FranzGleichmann 是的,它有效。只是不确定它是否实际上是异步运行的。
-
@MatthewTrip 不会)因为
Task.FromResult不是异步操作) -
@MatthewTrip 错过了
// Do something complex评论。是的,您将需要TaskCompletionSource并将您的工作转移到另一个线程,因此它不会阻塞调用线程。 -
@MatthewTrip 或
Task.Run(..)将完成这项工作。
标签: c# asynchronous async-await task-parallel-library