码迷,mamicode.com
首页 > 其他好文 > 详细

实现超时功能

时间:2020-04-07 20:25:47      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:keyword   any   链接   ati   tpc   tle   static   fun   code   

 

上面的这个代码,我们发现一个问题啊,如果访问那个链接要好久,那么这也很受伤啊。
是否能加入一个超时,如果访问一段时间没有返回结果,那么把资源留给别的需求者。

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"); }

 

 
 

实现超时功能

标签:keyword   any   链接   ati   tpc   tle   static   fun   code   

原文地址:https://www.cnblogs.com/robertyao/p/12655527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!