c# - 等待和异步属性中的方法错误 'Cannot await ' System.Threading.Tasks.Task'

标签 c# .net multithreading asynchronous

我已经为 .NET Framework 4、Silverlight 4 和 5 以及 Windows Phone 7.5 和 8 安装了 NuGet Package Async。

Version 1.0.16

我使用的是 Microsoft .NET 4.0,但由于虚拟主机包限制,我无法升级。 (可悲!)

我的测试代码:(我正在执行 Linq to SQL 查询代替 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在卸载Microsoft.Bcl.Async时并没有被删除。 Microsoft.Bcl 可以单独更新,看起来这个更新在 Microsoft.Bcl.Async 之外可能是一个问题。 Microsoft.Bcl 在安装 Microsoft.Bcl.Async 时安装。

希望这对其他人有帮助!

关于c# - 等待和异步属性中的方法错误 'Cannot await ' System.Threading.Tasks.Task',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439564/

相关文章:

c# - 搜索换行符 C#.net

.net - 云端桌面WPF应用程序部署

c# - .NET 列表上的随机访问很慢,但如果我总是引用第一个元素怎么办?

C++ 多线程 - 带条件变量的 channel

java - Spring@Service线程中的类字段安全吗?

Java线程作为事件循环线程

c# - 使用样式应用多个 AttachedCommandBehavior

c# - ASP.Net Identity 与 WebForms 到现有 SQL 数据库

c# - 如何在 LINQ 中根据类型对集合进行排序

c# - Horizo​​ntalAlignment ="Stretch"在 TreeViewItem 中不起作用