封装了一个方法,用于处理一些需要判断是否执行超时了的操作
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, () => { //这里时执行的方法 必须要有返回 });