C#如何控制方法的执行时间,超时则强制退出方法执行

转载:http://outofmemory.cn/code-snippet/1762/C-how-control-method-zhixingshijian-chaoshi-ze-force-quit-method-execution/comments1

http://www.cnblogs.com/08shiyan/archive/2011/07/30/2122183.html

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

http://www.blue1000.com/bkhtml/c17/2013-01/71047.htm

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

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

如下实现的方法:

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();
        }
    }

}

时间: 2024-07-29 21:46:08

C#如何控制方法的执行时间,超时则强制退出方法执行的相关文章

判断方法执行是否超时方法

#region 判断方法执行是否超时 /// <summary> /// 判断方法是否超时,适合无参数方法 /// </summary> /// <param name="action">方法名称</param> /// <param name="timeoutMilliseconds">超时时间限定</param> private void CallWithTimeout(Action act

C#百万数据查询出现超时问题的解决方法

本文较为详细的讲解了C#百万数据查询出现超时问题的解决方法,分享给大家供大家参考之用.具体方法如下: 很多时候我们用C#从百万数据中筛选一些信息时,经常会出现程序连接超时的错误,常见的错误有很多,例如: Timeout expired. The timeout period elapsed prior to completion of the operation or the server 等等 本文就常见的几种解决方案进行说明,感兴趣的可以对此加以改进与完善. ①.当然第一步要查看是否Conn

苹果系统中有些程序无法强制退出导致无法正常关机怎么办?

建议用系统自带的磁盘工具检查系统盘,并修复权限 很简单,就是在实用工具中,运行磁盘工具,然后在左边的窗口选择系统分区,然后右边大框子下边左右硬干分辨有两个按钮,左边的是检查和修复权限,右边的是检查和修复磁盘错误的~都是上边的是检查,下边的是修复~ 全检查并修复,然后重启,看看情况是不是依然存在,一般很多奇怪的问题都能解决~ 建议每次系统升级前都做这步,减少升级失败等奇怪的问题 如果这样做了情况依旧,那么看看是不是该软件本身的问题,一般测试版容易出这个问题,到软件官方网站看看有没有新版本升级或者补

当程序执行时间很快,控制台没显示执行代码和数据库

当程序执行时间很快,控制台没显示执行代码和数据库时,要想到是resin没找到程序的原因,这个时候就要检查配置文件里对应程序的路径是否正确. 如图:

android 利用广播实现程序的强制退出

利用广播机制,实现程序的强制退出. 前面有篇博文,写到了一键退出,这里利用到了那里的ActivityCollector的集合和BaseActivity 功能:打开程序后,先登录,登录成功后,进入主页面,主页面有个按钮,点击后弹出窗口,用户点击 "是"之后退出程序 1.ActivityCollector package com.yuanlp.forceexit; /**  * Created by 原立鹏 on 2017/6/28.  */ import android.app.Acti

【转】drupal7请求异常,执行时间过长的解决方法

drupal7请求错误,执行时间过长的解决办法 根据你的系统或网络设置Drupal不能读取网页,造成功能缺失.可能是web服务器配置或PHP设置引起的,可用更新.获取更新源.使用OpenID登 录或使用其他网络服务的下载信息都需要解决这个问题.若确定Drupal可正常读取网页但仍然出现此消息,你可以在你的 settings.php 文件底部添加 $conf['drupal_http_request_fails'] = FALSE;. Your Status report page located

强制SQL Server执行计划使用并行提升在复杂查询语句下的性能

最近在给一个客户做调优的时候发现一个很有意思的现象,对于一个复杂查询(涉及12个表)建立必要的索引后,语句使用的IO急剧下降,但执行时间不降反升,由原来的8秒升到20秒. 通过观察执行计划,发现之前的执行计划在很多大表连接的部分使用了Hash Join,由于涉及的表中数据众多,因此查询优化器选择使用并行执行,速度较快.而我们优化完的执行计划由于索引的存在,且表内数据非常大,过滤条件的值在一个很宽的统计信息步长范围内,导致估计行数出现较大偏差(过滤条件实际为15000行,步长内估计的平均行数为80

windows远程桌面3389超时锁定时间调整方法(取消锁屏时间限制)

我们在管理服务器操作时,有时候需要长时间操作服务器,有时候稍微离开下倒杯水或接个稍长点的电话,就超时断开了很烦啦!有没有方法解决这个问题类?答案是有的!我只要在组策略里面,稍微修改下超时时间就可以了.可以根据需要适当延长超时时间,或永不超时.具体设置为:  打开电脑选择运行,输入gpedit.msc,然后依次选择: 计算机配置.管理模板.windows组件.终端服务.会话.设置右边属性栏目里面的“为断开的会话设置时间”可以自定为:.从不.1分钟.5分钟.最长为2天. 设置后就不用烦恼啦!开工顺利

PS等难卸载软件的通用强制卸载方法、安装程序检测到计算机重新启动...问题、安装失败问题

一.强制卸载 1.找到安装目录删除相关文件 2.在C盘搜索相关的文件夹并删除 3.使用360等软件清理注册表,完成. 二.安装程序检测到计算机重新启动的过程...的问题处理 http://jingyan.baidu.com/article/5d368d1e1873b93f61c0575c.html (注意看图) 三.安装失败 http://jingyan.baidu.com/album/9f7e7ec04170fc6f28155481.html https://blog.twofei.com/5