zoukankan      html  css  js  c++  java
  • 异步编程设计模式Demo

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using System.Threading;
    
    namespace AsyncProgramDemo
    {
        public class AsyncComponentSample : Component
        {
            public event Action<object, BreakEventArgs> Break;
    
            public event Action<object, DebugCompltedEventArgs> Completed;
    
            public void StartDebug()
            {
                AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(1);
                Action<AsyncOperation> exec = new Action<AsyncOperation>(Execute);
                exec.BeginInvoke(asyncOp, null, null);
            }
    
            private void Execute(AsyncOperation asyncOp)
            {
                Thread.Sleep(1000);
                SendOrPostCallback callback = new SendOrPostCallback(Callback);
                asyncOp.Post(callback, 7);
                Thread.Sleep(1000);
                SendOrPostCallback completedCallback = new SendOrPostCallback(CompltedCallback);
                asyncOp.PostOperationCompleted(completedCallback, "completed");
            }
    
            private void Callback(object lineNumber)
            {
                if (Break != null)
                {
                    Break(this, new BreakEventArgs((int)lineNumber));
                }
            }
    
            private void CompltedCallback(object msg)
            {
                if (Completed != null)
                {
                    Completed(this, new DebugCompltedEventArgs(msg.ToString()));
                }
            }
        }
    
        public class BreakEventArgs : EventArgs
        {
            public int LineNumber;
    
            public BreakEventArgs(int lineNumber)
            {
                this.LineNumber = lineNumber;
            }
        }
    
        public class DebugCompltedEventArgs : AsyncCompletedEventArgs
        {
            public string Msg;
    
            public DebugCompltedEventArgs(string msg) : base(null, false, null)
            {
                this.Msg = msg;
            }
        }
    }
  • 相关阅读:
    Cookie:Session,ServletContext
    thrift安装笔记
    Maven笔记
    JVM 几个重要的参数
    dbvisualizer参数设置
    Linux中如何设置java环境变量
    java.net.NoRouteToHostException: No route to host
    新上海滩感想
    也许你的种子永远不会开花,因为他是一棵参天大树
    男子给妻子做了张桌子,他病逝后家人偶然发现...
  • 原文地址:https://www.cnblogs.com/chengshuiqiang/p/4479051.html
Copyright © 2011-2022 走看看