常用异步延迟方法

    /// <summary>
    /// 定义与方法同签名的事件委托
    /// </summary>
    public delegate void AsyncEventHandler();

    /// <summary>
    /// 定义与方法同签名的回调方法委托
    /// </summary>
    /// <param name="ex">异常信息对象</param>
    public delegate void AsyncCallbackHandler(Exception ex);

    /// <summary>
    /// 异步调用引擎类
    /// </summary>
    public class AsyncCallEngine
    {
        /// <summary>
        /// 执行异步方法调用
        /// </summary>
        /// <param name="asyncMethod">异步执行的方法</param>
        /// <param name="callbackMethod">异步执行的方法执行后回调的方法</param>
        public static void Process(AsyncEventHandler asyncMethod, AsyncCallbackHandler callbackMethod)
        {
            try
            {
                //实例化委托并初赋值
                AsyncEventHandler acd = new AsyncEventHandler(asyncMethod);

                //实例化回调方法并订阅
                AsyncCallback acb = new AsyncCallback((ar) =>
                {
                    //从异步状态ar.AsyncState中,获取委托对象
                    acd = (AsyncEventHandler)ar.AsyncState;
                    Exception _ex = null;

                    try
                    {
                        //异步完成,执行回调方法
                        acd.EndInvoke(ar);
                    }
                    catch (Exception ex)
                    {
                        _ex = ex;
                    }

                    //调用回调函数
                    if (callbackMethod != null)
                    {
                        callbackMethod(_ex);
                    }
                });

                //异步开始
                IAsyncResult iar = acd.BeginInvoke(acb, acd);
            }
            catch (Exception ex)
            {
                //调用回调函数
                if (callbackMethod != null)
                {
                    callbackMethod(ex);
                }
            }
        }

        /// <summary>
        /// 执行异步方法调用
        /// </summary>
        /// <param name="asyncMethod">异步执行的方法</param>
        public static void Process(AsyncEventHandler asyncMethod)
        {
            Process(asyncMethod, null);
        }
    }
时间: 2024-08-14 06:57:32

常用异步延迟方法的相关文章

结合Scikit-learn介绍几种常用的特征选择方法

作者:Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减少特征数量.降维,使模型泛化能力更强,减少过拟合 增强对特征和特征值之间的理解 拿到数据集,一个特征选择方法,往往很难同时完成这两个目的.通常情况下,我们经常不管三七二十一,选择一种自己最熟悉或者最方便的特征选择方法(往往目的是降维,而忽略了对特征和数据理解的目的).

常用跨域方法实践(一)

这几天看了鬼道师兄的<跨终端Web>这本书,该书从解决实际业务出发,讲述了跨终端的优势与未来,受益良多.其中,书中第九章介绍了作者在阿里内部的一个参赛作品Storage,该作品巧妙的使用了跨域知识,让我见识到跨域其实不仅仅是JSONP.以前,对前端跨域这块或多或少有点了解,但真正动手实践的不是很多.于是,这段时间我好好整理了常用跨域方法的具体实现.本文,主要介绍了JSONP和CORS的实现方式. 相关概念: 只要协议.域名.端口有任何一个不同,都被当作是不同的域 JavaScript出于安全方

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2.1  文档初始化相关 evt属性 evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理.它与普通JavaScript脚本中的event基本相同,只不过在普通JavaScript的脚本中简写成“e”. ownerDocument属性 通过引

服务器端异步 Web 方法

何时采用异步 Web 方法 在确定是否适合在您的应用程序中采用异步 Web 方法时,有几个问题需要考虑.首先,调用的 BeginXXX 函数必须返回一个 IAsyncResult 接口.IAsyncResult 是从多个异步 I/O 操作返回的,这些操作包括访问数据流.进行 Microsoft® Windows® 套接字调用.执行文件 I/O.与其他硬件设备交互.调用异步方法,当然也包括调用其他 Web 服务.您可以从这些异步操作中得到 IAsyncResult,以便从 BeginXXX 函数返

数据归一化和两种常用的归一化方法

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间.转换函数如下: 其中max为样本数据的最大

干货:结合Scikit-learn介绍几种常用的特征选择方法

原文  http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减少特征数量.降维,使模型泛化能力更强,减少过拟合 增强对特征和特征值之间的理解 拿到数据集,一个特征选择方法,往往很难同时完成这两个目的.通常情况下,我

BP神经网络设计常用的基本方法和实用技术

尽管神经网络的研究和应用已经取得巨大成功,但在网络的开发设计方面至今仍没有一套完善的理论做指导,应用中采取的主要设计方法是,在充分了解待解决问题的基础上将经验与试探相结合,通过多次改进性试验,最终选出一个较好的设计方案.下面是在开发神经网络中常用的基本方法和实用技术. (1)  网络信息容量与训练样本数 多层神经网络的分类能力与网络信息容量相关,如果网络的权值和阈值总数nw表征网络信息容量,研究表明,训练样本数N与给定的训练误差ε之间应满足以下匹配关系: N = nw / ε. 上式表明网络的信

iPone应用开发 UIView 常用属性和方法

iPone应用程序开发 UIView常用属性和方法 常用属性 alpha 视图的透明度0.0f - 1.0f backgroundColor 视图的背景颜色 subviews 子视图的集合 hidden 视图是否隐藏 tag 视图的唯一标示符,是一个整形数据 superview 视图的父视图 multipleTouchEnabled 是否开启多点触控 userInteractionEnable 是否响应触摸事件 常用方法 - (void)removeFromSuperview; //从父视图中删

UIWebView浏览器控件常用属性与方法汇总

一.什么是UIWebView UIWebView是iOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 二.UIWebView常用属性和方法 UIWebView常用的加载资源的方法 - (void)loadRequest:(NSURLRequest *)request; @property(nonatomic) UIDataDetectorTypes dataDetectorTypes; // 需要进行检测的数据类型 @property(nonatomic,rea