资深开发者!

我有一个使用POST或GET发布到网站并阅读响应的类。现在都是异步的,不会导致UI挂起。

我需要升级它才能处理取消。所有正在使用的异步方法都不接受取消令牌。我需要了解为什么以及我的替代方案是什么。如果可能,我应该在类中创建CancellationTokenSource对象,还是从UI中对其进行参数化设置?

第二,我需要公开PostData()方法的进度。我该怎么办?

课程: 通用标签

注意:最后有三种方法用于文件上传。我仍然需要弄清楚然后再做,在此之前,我需要了解“取消和进度”报告。

相关问题用于PostSubmitter的异步CTP

任何帮助将不胜感激。

有帮助吗?

解决方案

通过采用IProgress<T>CancellationToken参数来支持进度和取消。

要取消,请通过调用CancellationToken.ThrowIfCancellationRequested定期检查是否已请求取消。有关更多信息,请参见在MSDN上的取消

要取得进步,您首先需要确定哪种“进步”才有意义。例如,如果“ progress”只是传输的字节数,则可以使用IProgress<int>。确定进度类型后,请致电 IProgress<T>.Report 报告进度。对于IProgress<T>,有两件事要注意:

  1. IProgress<T>参数可以是null
  2. IProgress<T>.Report异步运行。这意味着您必须:A)为T中的IProgress<T>使用值类型; B)对传递给T的每个IProgress<T>.Report对象执行深拷贝;或C)每次您调用T时,都会创建一个新的IProgress<T>.Report对象。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top