zoukankan      html  css  js  c++  java
  • C# 给某个方法设定执行超时时间-2

     var response = RunTaskWithTimeout<ReturnType>(
            (Func<ReturnType>)delegate { return SomeMethod(someInput); }, 30);
    
    
        /// <summary>
        /// Generic method to run a task on a background thread with a specific timeout, if the task fails,
        /// notifies a user
        /// </summary>
        /// <typeparam name="T">Return type of function</typeparam>
        /// <param name="TaskAction">Function delegate for task to perform</param>
        /// <param name="TimeoutSeconds">Time to allow before task times out</param>
        /// <returns></returns>
        private T RunTaskWithTimeout<T>(Func<T> TaskAction, int TimeoutSeconds)
        {
            Task<T> backgroundTask;
    
            try
            {
                backgroundTask = Task.Factory.StartNew(TaskAction);
                backgroundTask.Wait(new TimeSpan(0, 0, TimeoutSeconds));
            }
            catch (AggregateException ex)
            {
                // task failed
                var failMessage = ex.Flatten().InnerException.Message);
                return default(T);
            }
            catch (Exception ex)
            {
                // task failed
                var failMessage = ex.Message;
                return default(T);
            }
    
            if (!backgroundTask.IsCompleted)
            {
                // task timed out
                return default(T);
            }
    
            // task succeeded
            return backgroundTask.Result;
        }

    https://stackoverflow.com/questions/13513650/how-to-set-timeout-for-a-line-of-c-sharp-code

  • 相关阅读:
    elasticsearch7.16.2集群部署
    MySQL on lion
    2012年10月 小记
    2013年01月小记
    配置tomcat+apache
    Maven安装
    android maven lion
    2012年11月小记
    Python:sys.argv[]的用法<转>
    Python:socket初学总结
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/7126442.html
Copyright © 2011-2022 走看看