Exemplo n.º 1
0
        /// <summary>
        /// 调用函数
        /// </summary>
        /// <param name="input">可选个数的输入参数</param>
        /// <returns></returns>
        public object DoAction(params object[] input)
        {
            EventNeedRun whatTodo = CombineActionAndManuset;
            //通过BeginInvoke方法,在线程池上异步的执行方法。
            IAsyncResult r = whatTodo.BeginInvoke(input, MyAsyncCallback, null);

            //设置阻塞,如果上述的BeginInvoke方法在timeout之前运行完毕,则manu会收到信号。此时isGetSignal为true。
            //如果timeout时间内,还未收到信号,即异步方法还未运行完毕,则isGetSignal为false。
            this.IsGetSignal = this._manu.WaitOne(this.Timeout);

            return(this.IsGetSignal ? whatTodo.EndInvoke(r) : null);
        }
Exemplo n.º 2
0
        ///
        /// 调用函数
        /// 可选个数的输入参数
        ///
        public object doAction(params object[] input)
        {
            EventNeedRun WhatTodo = CombineActionAndManuset;
            //通过BeginInvoke方法,在线程池上异步的执行方法。
            var r = WhatTodo.BeginInvoke(input, MyAsyncCallback, null);

            //设置阻塞,如果上述的BeginInvoke方法在timeout之前运行完毕,则manu会收到信号。此时isGetSignal为true。
            //如果timeout时间内,还未收到信号,即异步方法还未运行完毕,则isGetSignal为false。
            isGetSignal = manu.WaitOne(timeout);
            if (isGetSignal == true)
            {
                return(WhatTodo.EndInvoke(r));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 调用函数
        /// </summary>
        /// <param name="input">可选个数的输入参数</param>
        /// <returns></returns>
        public async void doAction(params object[] input)
        {
            EventNeedRun WhatTodo = CombineActionAndManuset;
            //通过BeginInvoke方法,在线程池上异步的执行方法。
            var workTask = Task.Run(() => WhatTodo.Invoke(input));
            // var followUpTask = workTask.ContinueWith(MyAsyncCallback);
            var ret = await workTask;

            // await followUpTask;
            // var r = WhatTodo.BeginInvoke(input, MyAsyncCallback, null);
            //设置阻塞,如果上述的BeginInvoke方法在timeout之前运行完毕,则manu会收到信号。此时isGetSignal为true。
            //如果timeout时间内,还未收到信号,即异步方法还未运行完毕,则isGetSignal为false。
            isGetSignal = manu.WaitOne(timeout);

            if (isGetSignal == true)
            {
                return;
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// 构造函数,传入超时的时间以及运行的方法
 /// </summary>
 /// <param name="_action">运行的方法 </param>
 /// <param name="_timeout">超时的时间</param>
 public clsFuncTimeout(EventNeedRun _action, int _timeout)
 {
     FunctionNeedRun = _action;
     timeout         = _timeout;
 }
Exemplo n.º 5
0
 /// <summary> 
 /// 构造函数,传入超时的时间以及运行的方法 
 /// </summary> 
 /// <param name="_action">运行的方法 </param> 
 /// <param name="_timeout">超时的时间</param> 
 public clsFuncTimeout(EventNeedRun _action, int _timeout)
 {
     FunctionNeedRun = _action;
     timeout = _timeout;
 }
Exemplo n.º 6
0
 /// <summary>
 /// 构造函数,传入超时的时间以及运行的方法
 /// </summary>
 /// <param name="action">运行的方法</param>
 /// <param name="timeout">超时的时间</param>
 public FuncTimeout(EventNeedRun action, int timeout)
 {
     this._functionNeedRun = action;
     this.Timeout          = timeout;
 }