首页 > Windows开发 > 详细

C#如何控制方法按指定时间强制超时返回

时间:2019-12-23 16:51:08      阅读:169      评论:0      收藏:0      [点我收藏+]

要控制执行时间,我们必须使用异步模式,在另外一个线程中执行方法,如果超时,则抛出异常终止线程执行。

如下实现的方法:

public static void Main(string[] args)
{
//4秒后强制过期
CallWithTimeout(FiveSecondMethod, 4000);
}

public static void FiveSecondMethod()
{
Thread.Sleep(5000);
}
public static void CallWithTimeout(Action action, int timeoutMilliseconds)
{
Thread threadToKill = null;
Action wrappedAction = () =>
{
threadToKill = Thread.CurrentThread;
action();
};

IAsyncResult result = wrappedAction.BeginInvoke(null, null);
if (result.AsyncWaitHandle.WaitOne(timeoutMilliseconds))
{
wrappedAction.EndInvoke(result);
}
else
{
threadToKill.Abort();
throw new TimeoutException();
}
}

C#如何控制方法按指定时间强制超时返回

原文:https://www.cnblogs.com/b2cup/p/12084004.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!