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, () =>
                        {
                            //這裏時執行的方法 必須要有返回

                        });

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章