【问题标题】:Portable Class Library with async await & GetType().IsValueType具有异步等待和 GetType().IsValueType 的可移植类库
【发布时间】: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。只需删除asyncawait,就完成了。除此之外,我什至不明白为什么该操作需要在线程池线程中发生;生成单个 GUID 是一个非常快速的操作。您将失去 很多 更多时间来启动线程池线程。
  • 该示例纯粹是为了重新创建编译错误,并不能说明解决方案的结构。

标签: c# .net async-await portable-class-library


【解决方案1】:

你需要安装Microsoft.Bcl.Async

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多