0
我有以下方法,在Windows的存储项目,上传文件取消的HttpClient上的连接请求失去了
public async Task<Boolean> UploadFileStreamService(Stream binaries, String fileName, String filePath)
{
try
{
filePath = Uri.EscapeDataString(filePath);
using (var httpClient = new HttpClient { BaseAddress = Constants.baseAddress })
{
var content = new StreamContent(binaries);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", App.Current.Resources["token"] as string);
App.Current.Resources["TaskUpload"] = true;
using (var response = await httpClient.PostAsync("file?fileName=" + filePath, content))
{
string responseData = await response.Content.ReadAsStringAsync();
if (responseData.Contains("errorCode"))
throw new Exception("Exception: " + responseData);
else
{
JsonObject jObj = new JsonObject();
JsonObject.TryParse(responseData, out jObj);
if (jObj.ContainsKey("fileId"))
{
if (jObj["fileId"].ValueType != JsonValueType.Null)
{
App.Current.Resources["NewVersionDoc"] = jObj["fileId"].GetString();
}
}
}
return true;
}
}
}
catch (Exception e)
{
...
}
}
而且在app.xaml.cs我对构造:
NetworkInformation.NetworkStatusChanged +=
NetworkInformation_NetworkStatusChanged; // Listen to connectivity changes
并在该方法我检查连接更改。
我想知道的是当我检测到网络变化(从互联网到没有)时如何停止上传任务。
是的,那工作:)谢谢 – Ric
只是一个后续问题,如果我在几个PostAsync上使用相同的标记,当我做_cts.Cancel();它是否取消使用该令牌的所有任务? – Ric
是(如果您使用来自同一个CancellationTokeSource的令牌 - 它们不必相同)。所以如果你想单独取消每个帖子 - 使用不同的CancellationTokenSources。 – Evk