zoukankan      html  css  js  c++  java
  • C#异步

    using System;
    using System.Threading;
    using System.Runtime.Remoting.Messaging;
    using System.Collections.Generic;
    
    namespace PurchaseSystem.Component
    {
        public enum FlowType
        {
            CaiGou,
            YingFu
        }
    
        public delegate void ProccessFlowDelegate(FlowType type);
    
        public class Flow
        {
            private void AsyncFlow(FlowType type, Action<IAsyncResult, bool> callback = null)
            {
                ProccessFlowDelegate asyncFlow = AsyncFlowHandler;
    
                IAsyncResult asyncResult = asyncFlow.BeginInvoke(type, AsyncFlowCallback, null);
    
                ThreadPool.RegisterWaitForSingleObject(asyncResult.AsyncWaitHandle,
                    AsyncFlowCompleteCallback, new List<object>() { asyncResult, callback },
                    1800000, true);
            }
    
            private static void AsyncFlowCompleteCallback(object state, bool isTimeout)
            {
                List<object> stateList = state as List<object>;
                IAsyncResult result = stateList[0] as IAsyncResult;
                Action<IAsyncResult, bool> callback = stateList[1] as Action<IAsyncResult, bool>;
    
                if (isTimeout)
                {
                    if (!result.IsCompleted)
                    {
                        result.AsyncWaitHandle.Close();
                    }
                }
                callback(result, isTimeout);
            }
    
            private static void AsyncFlowCallback(IAsyncResult result)
            {
                ProccessFlowDelegate d = (ProccessFlowDelegate)((AsyncResult)result).AsyncDelegate;
                d.EndInvoke(result);
            }
    
            private void AsyncFlowHandler(FlowType type)
            {
                if (type == FlowType.CaiGou)
                {
    
                }
                else if (type == FlowType.YingFu)
                {
    
                }
            }
    
            public void CaiGouProccess(Guid purchaseApplyId)
            {
                AsyncFlow(FlowType.CaiGou, null);
            }
        }
    }
    using System;
    using System.Threading;
    using System.Collections.Generic;
    using System.Runtime.Remoting.Messaging;
    
    namespace PurchaseSystem.Component
    {
        public enum FlowProcessType 
        {
            CaiGou,
            YingFu
        }
    
        public delegate void FlowProcessDelegate(FlowProcessType type, params object[] parameters);
    
        public class FlowProcess
        {
            private void AsyncFlowProcess(FlowProcessType type, params object[] parameters)
            {
                FlowProcessDelegate asyncMailNotice = AsyncFlowProcessHandler;
                IAsyncResult asyncResult = asyncMailNotice.BeginInvoke(type, parameters, FlowProcessCallback, null);
                ThreadPool.RegisterWaitForSingleObject(
                  asyncResult.AsyncWaitHandle,
                  FlowProcessCompleteCallback,
                  new List<object>() { asyncResult },
                  1800000,
                  true);
            }
            private void FlowProcessCallback(IAsyncResult result)
            {
                MailNoticeDelegate d = (MailNoticeDelegate)((AsyncResult)result).AsyncDelegate;
                d.EndInvoke(result);
            }
            private void FlowProcessCompleteCallback(object state, bool isTimeout)
            {
                List<object> stateList = state as List<object>;
                IAsyncResult result = stateList[0] as IAsyncResult;
                if (isTimeout)
                {
                    if (!result.IsCompleted)
                    {
                        result.AsyncWaitHandle.Close();
                    }
                }
            }
            private void AsyncFlowProcessHandler(FlowProcessType type, params object[] parameters)
            {
                if (type == FlowProcessType.CaiGou)
                {
    
    
                }
            }
    
            public void PurchaseApplyApprovalMailNotice2(Guid purchaseApplyId)
            {
                AsyncFlowProcess(FlowProcessType.CaiGou, purchaseApplyId);
            }
        }
    }
  • 相关阅读:
    廖雪峰Java6IO编程-2input和output-1inputStream
    安装spy-debugger查看前端日志
    廖雪峰Java6IO编程-1IO基础-1IO简介
    廖雪峰Java5集合-6Stack-1使用Stack
    廖雪峰Java5Java集合-5Queue-1使用Queue
    廖雪峰Java5集合-4Set-1使用Set
    20)升级登录标志
    19)加了验证码验证
    94)图片验证码
    18)添加引号转移函数,防止SQL注入
  • 原文地址:https://www.cnblogs.com/daixingqing/p/4429346.html
Copyright © 2011-2022 走看看