封裝了一個方法,用於處理一些需要判斷是否執行超時了的操作
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, () => { //這里時執行的方法 必須要有返回 });