gpt4 book ai didi

c# - Net.HttpClient 取消 ReadAsStringAsync?

转载 作者:太空狗 更新时间:2023-10-29 17:54:57 25 4
gpt4 key购买 nike

我使用 SendAsyncHttpCompletionOption.ResponseHeadersRead 来首先获取 header 。接下来我检查 Content-TypeContent-Length 以确保响应是标记并且大小合适。我使用 CancellationTokenSource 来取消 SendAsync(如果超过特定时间跨度)。

但是,如果类型和大小正确,我将继续使用 ReadAsStringAsync 实际获取标记字符串。 我可以向这个调用添加一个取消标记吗?所以如果实际下载时间太长,我可以中止它。或者可以通过任何其他方式完成吗?

我不想使用 GetStringAsync,因为我使用自定义 HttpRequestMessage

PS:我是 C# 的新手,2 周了。可能有什么东西在躲避我。

最佳答案

不,你不能。有 no overload of ReadAsStringAsync接受取消 token 和你can't cancel a non-cancelable async operation .

然而,您可以放弃该操作并继续使用 WithCancellation 扩展方法,该方法实际上不会取消操作,但会让代码像以前一样流动:

static Task<T> WithCancellation<T>(this Task<T> task, CancellationToken cancellationToken)
{
return task.IsCompleted
? task
: task.ContinueWith(
completedTask => completedTask.GetAwaiter().GetResult(),
cancellationToken,
TaskContinuationOptions.ExecuteSynchronously,
TaskScheduler.Default);
}

关于c# - Net.HttpClient 取消 ReadAsStringAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com