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;
            }
        }
    }
  • 相关阅读:
    Android之vector代码修改颜色
    一个关于native sql的程序
    webdynpro 下拉列表控件
    webdynpro tree控件使用
    webdynpro MESSGAE
    webdynpro的select_option示例
    一个简单的webdynpro的ALV示例
    ALV前导零的问题
    自动流水号
    OO的ALV隐藏工具栏的form
  • 原文地址:https://www.cnblogs.com/chengshuiqiang/p/4479051.html
Copyright © 2011-2022 走看看