博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#如何控制方法的执行时间,超时则强制退出方法执行
阅读量:7118 次
发布时间:2019-06-28

本文共 1048 字,大约阅读时间需要 3 分钟。

转载:

        

C#实现带有超时功能的回调函数类

有时候我们需要控制方法的执行时间,如果超时则强制退出。

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

如下实现的方法:

class Program{    static void Main(string[] args)    {        //try the five second method with a 6 second timeout        CallWithTimeout(FiveSecondMethod, 6000);        //try the five second method with a 4 second timeout        //this will throw a timeout exception        CallWithTimeout(FiveSecondMethod, 4000);    }    static void FiveSecondMethod()    {        Thread.Sleep(5000);    }    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();        }    }}
View Code

 

你可能感兴趣的文章
NSCharacterSet(只保留textField中输入的数字)
查看>>
教程-经典Delphi教程网
查看>>
使用token机制来验证用户的安全性-b
查看>>
Spring Cloud Feign 出现ClassNotFoundException: feign.Feign$Builder错误
查看>>
Java AJAX开发系列 - 2,项目中使用ZK
查看>>
ORA-06508: PL/SQL: could not find program 'XXXX'
查看>>
C#的override、new、vitutal一例
查看>>
CentOS 5.5通过yum安装 Memcached的步骤、问题、及解决办法
查看>>
weblogic mime-type
查看>>
索引调优
查看>>
iphone开发中的数据存储:Core Data
查看>>
XCODE4.3.2编程-HelloWorld
查看>>
如何在存储过程中自动添加分区
查看>>
C++类的大小
查看>>
SQL Server逗号分隔字符串拆成临时表
查看>>
Android支持多种设备的方法及资源文件的使用
查看>>
[zz]va_start() 和 va_end()函数应用
查看>>
看不懂自己写的代码,这对一个职业程序员来说是不可饶恕的--完美可以因天赋而成,也可通过无情的重复和实验实现。因为我不具有前者,我就一直坚持着后者。...
查看>>
探讨.net Socket支持在线连接数量
查看>>
InstallShield在MySQL和Oracle中执行SQL脚本的方法InstallShield在MySQL和Oracle中执行SQL脚本的方法...
查看>>