Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8 如何取消HttpClient获取Web请求_Windows 8_Windows Runtime_C# 5.0 - Fatal编程技术网

Windows 8 如何取消HttpClient获取Web请求

Windows 8 如何取消HttpClient获取Web请求,windows-8,windows-runtime,c#-5.0,Windows 8,Windows Runtime,C# 5.0,是否可以在Windows 8中取消HttpClient GET web请求。如果用户在页面上按back键,我正在寻找取消web请求的解决方案。在我的应用程序中,我使用静态类创建web请求 我在应用程序中使用了mvvmlight和staticviewmodels 在当前情况下,即使用户按下后退按钮, vm保持活动状态,回调到达并在vm中执行 因此,我正在寻找一个解决方案来取消背压请求 试试这个 protected async override void OnNavigatedTo(Navigati

是否可以在Windows 8中取消
HttpClient GET web请求。
如果用户在页面上按back键,我正在寻找取消web请求的解决方案。在我的应用程序中,我使用
静态类
创建web请求

我在应用程序中使用了
mvvmlight
staticviewmodels

在当前情况下,即使用户按下后退按钮,
vm
保持活动状态,回调到达并在
vm
中执行

因此,我正在寻找一个解决方案来取消背压请求

试试这个

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    await HttpGetRequest();
}

public CancellationTokenSource cts = new CancellationTokenSource();
private async Task HttpGetRequest()
{
    try
    {
        DateTime now = DateTime.Now;
        var httpClient = new HttpClient();
        var message = new HttpRequestMessage(HttpMethod.Get, "https://itunes.apple.com/us/rss/toppaidapplications/limit=400/genre=6000/json");
        var response = await httpClient.SendAsync(message, cts.Token);
        System.Diagnostics.Debug.WriteLine("HTTP Get request completed. Time taken : " + (DateTime.Now - now).TotalSeconds + " seconds.");
    }
    catch (TaskCanceledException)
    {
        System.Diagnostics.Debug.WriteLine("HTTP Get request canceled.");
    }
}

private void btnCancel_Click(object sender, RoutedEventArgs e)
{
    cts.Cancel();
}

您可以使用CancellationToken取消异步方法。这是一种方式,可能是其他方式。请添加CancelationToken取消请求的方式作为答案。然后我会将其标记为答案请注意,对于Windows 8.1运行时,情况发生了“稍微”的变化,因此当前的答案仅适用于Windows 8.0中的运行时。OP还要求仅适用于W8。请看问题的标签。我确实看到了标签,您的答案对于Windows 8来说非常好。刚刚为那些像我一样的人添加了评论,他们可能会在最新(到目前为止)的窗口中查找类似的信息,并将它们指向适当的位置。