zoukankan      html  css  js  c++  java
  • 同步、异步、异步回调

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Runtime.Remoting.Messaging;
    
    namespace Async
    {
        public delegate int AddHandler(int a, int b);
    
        public class AddCls
        {
            public static int Add(int a, int b)
            {
                Console.WriteLine("开始计算:" + a + "+" + b);
                Thread.Sleep(3000);
                Console.WriteLine("计算完成!");
                return a + b;
            }
        }
    
        public class Test
        {
            static void Main(string[] args)
            {
                //同步
                //sync();
    
                //异步
                //async();
    
                //异步回调
                asyncCallBack();
    
            }
    
            /// <summary>
            /// 同步
            /// </summary>
            private static void sync()
            {
                Console.WriteLine("===== 同步调用 SyncInvokeTest =====");
                AddHandler handler = new AddHandler(AddCls.Add);
                int result = handler.Invoke(1, 2);
                Console.WriteLine("继续做别的事情。。。");
                Console.WriteLine("和等于:" + result);
                Console.ReadKey();
            }
    
            /// <summary>
            /// 异步
            /// </summary>
            private static void async()
            {
                Console.WriteLine("===== 异步调用 AsyncInvokeTest =====");
                AddHandler handler = new AddHandler(AddCls.Add);
                IAsyncResult ir = handler.BeginInvoke(1, 2, null, null);
                Console.WriteLine("继续做别的事情。。。");
                int result = handler.EndInvoke(ir);
                Console.WriteLine("和等于:" + result);
                Console.ReadKey();
            }
    
            /// <summary>
            /// 异步回调
            /// </summary>
            private static void asyncCallBack()
            {
                Console.WriteLine("===== 异步调用 AsyncInvokeTest =====");
                AddHandler handler = new AddHandler(AddCls.Add);
                IAsyncResult ir = handler.BeginInvoke(1, 2, new AsyncCallback(callBack), "AsycState:OK");
                Console.WriteLine("继续做别的事情。。。");
                Console.ReadKey();
            }
    
            /// <summary>
            /// 回调
            /// </summary>
            private static void callBack(IAsyncResult ir)
            {
                AddHandler handler = (AddHandler)((AsyncResult)ir).AsyncDelegate;
                Console.WriteLine(handler.EndInvoke(ir));
                Console.WriteLine(ir.AsyncState);
            }
        }
    }
  • 相关阅读:
    Gitlab安装与备份恢复
    Logstash使用grok插件解析Nginx日志
    SSH登录启用Google二次身份验证
    Nginx隐藏标识以及其版本号
    Nginx虚拟目录设置
    Tomcat虚拟目录设置
    sqlserver无法连接
    Howto: 如何将ArcGIS Server缓存移动到新服务器
    优酷网架构学习笔记
    .net中自定义过滤器对Response内容进行处理
  • 原文地址:https://www.cnblogs.com/valor-xh/p/5940604.html
Copyright © 2011-2022 走看看