【发布时间】:2014-04-01 01:06:24
【问题描述】:
我渴望在我的stream.ReadAsync() 中添加超时功能,并阅读本文Async Cancellation: Bridging between the .NET Framework and the Windows Runtime (C# and Visual Basic) 中的Microsoft 帮助。本文建议使用AsTask() 来实现这一点。但是我的 C# 似乎根本无法识别 AsTask()。
我正在使用 Visual Studio 2013 和 Windows 7 以及 using System.Threading;,这是我拥有的一段代码:
private async Task<int> ReadAsync(BluetoothClient Client)
{
const int timeoutMs = 10000;
var cancelationToken = new CancellationTokenSource(timeoutMs);
var stream = Client.GetStream();
byte[] buffer = { 0 };
int offset = 0;
int count = 1;
StatusManager("~Async Read Started...");
//This line works perfectly fine.
var rx = await stream.ReadAsync(buffer, offset, count);
//This line gets underlined with error for AsTask()
var rx = await stream.ReadAsync(buffer, offset, count).AsTask(cancelationToken);
//rx.AsTask().Start();
StatusManager("Recieved byte " + rx.ToString());
StatusManager("~Async Read Finished.");
}
伙计们,我在这里想念什么。我很困惑:)
更新:这些是已安装的 .NET 包列表,我会说 Visual Studio 2013 使用 4.5
【问题讨论】:
-
您的 .NET 框架版本是多少?
-
我的项目设置为使用 4.5
-
AsTask特定于 Windows 运行时。您正在开发 Windows 应用商店应用吗? -
一点也不。这是 Windows 桌面软件。 Widows Runtime 是否只能开发 Windows 应用商店应用程序?!
-
@Mehrad,是的,它仅适用于 Windows 应用商店应用程序。对于桌面 .NET 应用程序,您不需要
AsTask。
标签: c# .net asynchronous async-await cancellationtokensource