我正在我的Windows Phone 8应用程序中使用HttpClient.PostAsync()
上传图像。用户可以通过UI按钮选择取消此上传。
为了取消POST请求,我设置了一个CancellationToken
。但这并不起作用。在取消请求后,我仍然可以在我的代理中看到上传正在进行,很明显该请求被忽略了。我的代码:
using (var content = new MultipartFormDataContent())
{
var file = new StreamContent(stream);
file .Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = "filename.jpg",
};
file.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
content.Add(file);
await httpclient.PostAsync(new Uri("myurl", UriKind.Absolute), content,
cancellationToken);
}
请注意,我有一个
CancellationTokenSource
用于CancellationToken
。用户单击取消按钮后,将调用tokensource.Cancel()
。此外,我的测试用例中的图像大小在1到2 MB之间(并不是很大)。那么,是否有一种方法可以取消
HttpClient
的POST请求?
CancelationTokenSource
将取消底层操作。这取决于底层操作的实现(在本例中为SendAsync
方法)。操作可能会立即被取消,也可能在几秒钟后或永远不会被取消。” 因此,在进行PostAsync()
请求后,您可能需要检查cancellationToken.IsCancellationRequested
,如果为真,则调用DeleteAsync()
删除已上传的图像。 - DavidRRPostAsync()
调用的参数,它似乎是后者。) - DavidRR