TPL这个成语存在吗

本文关键字:存在 成语 TPL | 更新日期: 2023-09-27 18:21:29

在.NET4中使用TPL,我正试图决定如何设计处理未来的API。我想到的一种可能性是模仿异步模式,但没有End(IAsyncResult)方法:

public Task<int> BeginGetAge()
{
    // create and return task
}
public int GetAge()
{
    return this.BeginGetAge().Result;
}

因此,呼叫者可以决定是调用GetAge()的阻塞版本还是非阻塞版本。此外,他们可以访问未来,因此可以在未来之上构建延续等等。

这个成语有效吗?我遗漏了什么明显的缺点或问题吗?它可能有正式名称吗?

TPL这个成语存在吗

返回Task是新的C#5异步方式,它被称为TAP:基于任务的异步模式。

唯一的区别是该方法被命名为GetAgeAsync

所以,是的,建议使用这种方法,因为它可以在发布时轻松地移植到C#5异步。

这个习惯用法对我来说似乎非常有效,事实上,对基于Task的异步的支持将是即将推出的.Net版本中的一个重要功能。

然而,我会更改您的实现,这样阻塞方法GetAge就不会调用异步方法,然后等待它——(可能)创建新线程的开销是不必要的。