【发布时间】:2013-02-21 17:10:01
【问题描述】:
我需要在同一个可移植类库中进行以下调用:
public class Foobar
{
void Foo()
{
var b = GetType().IsValueType; //<-- 2
}
async Task<IEnumerable<T>> Bar<T>()
where T : class, IBaz, new()
{
return await Task.Factory.StartNew(() => new List<T>(new[] //<-- 1
{
new T {Qux = Guid.NewGuid().ToString()}
}));
}
interface IBaz
{
string Qux { get; set; }
}
}
设置以下目标框架:
- .net 框架 4.5
- 银光 5
- Windows Phone 8
- 适用于 Windows 应用商店应用的 .Net
我收到此构建错误:
找不到“异步”修饰符所需的所有类型。您的目标是错误的框架版本,还是缺少对程序集的引用?
我尝试安装bcl,但仍然遇到同样的错误。 如果我删除了 Sliverlight 目标,则异步工作但随后我会从 Type 类中丢失 IsValueType 道具...
【问题讨论】:
-
我认为该方法完全没有理由成为
async。只需删除async、await,就完成了。除此之外,我什至不明白为什么该操作需要在线程池线程中发生;生成单个 GUID 是一个非常快速的操作。您将失去 很多 更多时间来启动线程池线程。 -
该示例纯粹是为了重新创建编译错误,并不能说明解决方案的结构。
标签: c# .net async-await portable-class-library