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()
的阻塞版本还是非阻塞版本。此外,他们可以访问未来,因此可以在未来之上构建延续等等。
这个成语有效吗?我遗漏了什么明显的缺点或问题吗?它可能有正式名称吗?
返回Task
是新的C#5异步方式,它被称为TAP:基于任务的异步模式。
唯一的区别是该方法被命名为GetAgeAsync
。
所以,是的,建议使用这种方法,因为它可以在发布时轻松地移植到C#5异步。
这个习惯用法对我来说似乎非常有效,事实上,对基于Task
的异步的支持将是即将推出的.Net版本中的一个重要功能。
然而,我会更改您的实现,这样阻塞方法GetAge
就不会调用异步方法,然后等待它——(可能)创建新线程的开销是不必要的。