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参数是需要设定的时长。

看一下测试结果:

 

posted @ 2022-04-27 13:59  新*  阅读(1133)  评论(0编辑  收藏  举报