C#控制方法执行时间
1.最近在项目中有个读取文件的方法,如果文件过大,这个方法会长时间卡住,影响程序的执行。于是研究了一下控制方法的执行时间,如果超过某个时间,则跳出该方法的执行。
#demo
1 private static void Main(string[] args) 2 { 3 var startTime = DateTime.Now; 4 Console.WriteLine("开始时间:" + startTime); 5 var ret = Process(null, 10000);//如果运行时间超过10秒,退出执行 6 Console.WriteLine("Result={0},函数执行时间={1}s", ret, (DateTime.Now - startTime).TotalSeconds); 7 startTime = DateTime.Now; 8 ret = Process(null, 4000);//如果运行时间超过4秒,退出执行 9 Console.WriteLine("Result={0},函数执行时间={1}s", ret, (DateTime.Now - startTime).TotalSeconds); 10 Console.WriteLine("End:" + DateTime.Now); 11 Console.WriteLine("Press any key to exit..."); 12 Console.ReadKey(); 13 } 14 15 /// <summary> 16 /// 控制执行时间方法 17 /// </summary> 18 /// <param name="param"></param> 19 /// <param name="timeout">程序执行时间</param> 20 /// <returns></returns> 21 private static bool Process(string param, int timeout) 22 { 23 var ret = false; 24 new System.Threading.Tasks.TaskFactory().StartNew(() => 25 { 26 ret = LongTimeFunc(); 27 }).Wait(timeout); 28 29 return ret; 30 } 31 32 /// <summary> 33 /// 测试程序,固定执行五秒 34 /// </summary> 35 /// <returns></returns> 36 private static bool LongTimeFunc() 37 { 38 System.Threading.Thread.Sleep(5000); 39 return true; 40 }
#demo
上面的LongTimeFunc方法是我们需要控制时长的方法,Process的timeout参数是需要设定的时长。
看一下测试结果: