我已经为.NET Framework 4,Silverlight 4和5,以及Windows Phone 7.5和8安装了NuGet程序包异步。
Version 1.0.16
我使用的是Microsoft .NET 4.0,并且由于Web Hosting Package限制而无法升级。 (可悲!)
我的测试代码:(我正在用Linq to SQL Query代替Thread.Sleep)
public class Search
{
public async Task<List<Result>> GetResults(string SearchString)
{
await System.Threading.Tasks.Task.Factory.StartNew(() => Thread.Sleep(1000));
}
}
我的错误:
Cannot await 'System.Threading.Tasks.Task'
http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx讨论了该错误,但这并不是真正的答案,因为我没有使用VB,并且已经在执行解决方案中所述的操作。
[编辑]
我收到警告:
Warning 4 The primary reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resolve this problem, either remove the reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
谢谢你的帮助。
最佳答案
什么样的恶梦!我发现了问题。
Microsoft.Bcl
在我看来,Microsoft.Bcl和Microsoft.Bcl.Async发生冲突。我使用以下命令删除了Microsoft.Bcl和Microsoft.Bcl.Async:
uninstall-package Microsoft.Bcl.Async -force
然后:
uninstall-package Microsoft.Bcl -force
然后再次安装:
install-package Microsoft.Bcl.Async
现在,它具有魅力。我不敢相信吗?还不确定为什么Microsoft.Bcl首先保留在那里。删除Microsoft.Bcl.Async之后,它就被留在了后面。到目前为止,一切正常。还有一些测试要做。
如果其他人的NuGet软件包有问题,您可以自行承担以下风险:
update-package -pre
这将尝试回滚已更新的软件包。这就是我发现问题的方式。
[编辑]
值得一提的是,在进行进一步测试后,如果卸载Microsoft.Bcl.Async,则不会删除Microsoft.Bcl。 Microsoft.Bcl可以单独更新,并且看来此更新不在Microsoft.Bcl.Async之外。当一个人安装Microsoft.Bcl.Async时,即会安装Microsoft.Bcl。
希望这对其他人有帮助!
关于c# - 来自await和async属性的方法错误 'Cannot await ' System.Threading.Tasks.Task',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19439564/