我執行一個事件 當開始執行時 倒計時30s
1.執行完畢,讀秒結束走下一步
2.未執行完畢,30s超時,回傳
是不是要用到多執行緒
該如何寫 請大佬們給個思路 或者 寫個簡單的demo
uj5u.com熱心網友回復:
主行程開執行緒a,并計時30s后,讀取a執行緒回傳值,若未回傳,則return 超時
uj5u.com熱心網友回復:
bool ret= Task.WaitAny(task,30000)uj5u.com熱心網友回復:
"執行一個事件”?事件通常不是這個意思,或者說這里其實其實跟事件無關。給你寫個檢測超時的 demo:
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
for (var i = 0; i < 20; i++)
{
var r = await test();
Console.WriteLine($"回傳 {(r == -1 ? "超時" : r.ToString())}");
}
}
private static async Task<int> test()
{
var n = new Random().Next(500);
var t1 = Task.Delay(300);
var t2 = Task.Run(() => Thread.Sleep(n)); //自定義任務
//var t2 = Task.Run(async () => await Task.Delay(n));
var t = await Task.WhenAny(t1, t2);
if (t == t1)
return -1;
else
return n;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/276496.html
標籤:C#
