我有如下代码行用于从NetworkStream异步读取:
int bytesRead = await Task<int>.Factory.FromAsync(this.stream.BeginRead, this.stream.EndRead, buffer, 0, buffer.Length, null);
我希望它能够支持取消操作。我看到可以使用CancellationTokenSource来取消任务,但我不知道如何将其传递给TaskFactory.FromAsync()。
是否有可能使通过FromAsync()构造的任务支持取消操作?
编辑:我想要取消一个已经在运行的任务。
FromAsync
没有重载,支持取消令牌。一个可能的解决方案是添加一层 - 用FromAsync
启动自己的操作,然后使用另一个从外部支持取消的Task
来读取流,在自定义操作中完成。 - keenthinkerNetworkStream.ReadAsync
зҡ„е……еҲҶзҗҶз”ұпјҹ - avoCancellationToken.Register
注册一个回调函数,并从那里调用NetworkStream.Dispose
。这应该会取消挂起的读取操作。 - avo