实现超时功能
Posted robertyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现超时功能相关的知识,希望对你有一定的参考价值。
上面的这个代码,我们发现一个问题啊,如果访问那个链接要好久,那么这也很受伤啊。
是否能加入一个超时,如果访问一段时间没有返回结果,那么把资源留给别的需求者。
public static async Task<string> visitTimeoutUrl(HttpClient client,string url)
{
var visitTask=client.GetStringAsync(url);
var timeoutTask = Task.Delay(3000);
var completedTask = await Task.WhenAny(visitTask,timeoutTask);
if (completedTask == timeoutTask)
{
return null;
}
return await visitTask;
}
void asyncMath() { if (SetBridgeTask.IsCompleted) { SetBridgeTask = new Task(() => {
Thread.Yield();
}}
if (SetBridgeTask.Status != TaskStatus.Running && SetBridgeTask.Status != TaskStatus.WaitingToRun)
{ SetBridgeTask.Start(); }
} Task voidTask= new Task(() => { Thread.Yield();; }); var secSpan = TimeSpan.FromSeconds(10); var timeoutTask = Task.Delay(secSpan); var completedTask = await Task.WhenAny(voidTask, timeoutTask); if (completedTask == timeoutTask) { MessageBox.Show("test"); }
以上是关于实现超时功能的主要内容,如果未能解决你的问题,请参考以下文章