C# 方法执行超时处理

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

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, () =>
         {
             //这里时执行的方法 必须要有返回
 
         });
posted on 2024-02-25 20:57  蚂蚁上台阶  阅读(85)  评论(0编辑  收藏  举报