封裝了一個方法,用於處理一些需要判斷是否執行超時了的操作
internal static T TimeoutCheck<T>(int ms, Func<T> func)
{
var wait = new ManualResetEvent(false);
bool RunOK = false;
var task = Task.Run<T>(() =>
{
var result= func.Invoke();
RunOK = true;
wait.Set();
return result;
});
wait.WaitOne(ms);
if (RunOK)
{
return task.Result;
}
else
{
return default(T);
}
}
調用:
//1000毫秒檢測 超時認為檢測失敗
var checkResult = Tools.TimeoutCheck(1000, () =>
{
//這里時執行的方法 必須要有返回
});
