實現超時功能

 

上面的這個代碼,我們發現一個問題啊,如果訪問那個鏈接要好久,那麼這也很受傷啊。
是否能加入一個超時,如果訪問一段時間沒有返回結果,那麼把資源留給別的需求者。

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

 

 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章