c#判断代码是否执行超时
一、使用委托
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
delegate void dg(); dg dgCase; void method() { dgCase = () => { Thread.Sleep(10000); MessageBox.Show( "代码执行完毕!" ); }; WaitHandle wh = dgCase.BeginInvoke( null , null ).AsyncWaitHandle; if (!wh.WaitOne(3000)) { MessageBox.Show( "执行已过了3秒!" ); } return ; } |
二、使用Task
1
2
3
4
5
6
7
8
9
10
|
Task t = new Task(() => { Thread.Sleep(10000); MessageBox.Show( "代码执行完毕!" ); }); t.Start(); if (!t.Wait(3000)) { MessageBox.Show( "执行已过了3秒!" ); } return ; |
三、使用Timer
1
2
3
4
5
6
7
8
9
10
11
12
13
|
void method() { System.Timers.Timer time = new System.Timers.Timer(3000) { Enabled = true }; time.Elapsed += (x, j) => { MessageBox.Show( "执行已过了3秒!" ); time.Stop(); }; Thread.Sleep(10000); MessageBox.Show( "代码执行完毕!" ); time.Stop(); return ; } |
四、使用Thread
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
void ThreadMethod() { Thread t = new Thread(()=> { Thread.Sleep(10000); MessageBox.Show( "代码执行完毕!" ); }); t.Start(); bool isOver = t.Join(3000); if (!isOver) { MessageBox.Show( "执行已过了3秒!" ); } } |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/Learn_change_myself/article/details/105199967