封装了一个方法,用于处理一些需要判断是否执行超时了的操作

封装了一个方法,用于处理一些需要判断是否执行超时了的操作

 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, () =>
                        {
                            //这里时执行的方法 必须要有返回

                        });

  


Qing 发布于  2023-10-12 11:18