zoukankan      html  css  js  c++  java
  • Deledate同步异步研究

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace LearnDelegate
    {
        class Program
        {
            public static void Main(string[] args)
            {
                SyncDel del = Calulate;
                int x = 10;
                int y = 10;
                del.Invoke(x, y);
                CalOK();
    
                AsyncDel1 del1 = Calulate;
                del1.BeginInvoke(x, y, AsynCalOK, null);
    
                AsyncDel2 del2 = ReturnCalulate;
                var AsynResult = del2.BeginInvoke(x, y, AsynCalOK, null);
                int result = del2.EndInvoke(AsynResult);
    
                Console.WriteLine("主线程运行完成");
    
            }
            public static void Calulate(int x, int y)
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "计算:" + (x + y));
            }
            public static int ReturnCalulate(int x, int y)
            {
    
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "计算" + (x + y));
                return x + y;
            }
            public static void CalOK()
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "计算完成");
            }
            public static void AsynCalOK(IAsyncResult result)
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "计算完成");
            }
            public delegate void SyncDel(int x, int y);
            public delegate void AsyncDel1(int x, int y);
            public delegate int AsyncDel2(int x, int y);
        }
    }
    

    执行结果

    SynDel是同步委托,AsynDel1和AsynDel2为异步委托。

    何时使用委托。(自我理解)

    简单来讲当你需要处理一件事,但不知道该给谁的时候,这时我们需要使用委托。简单来讲就是这个方法可以被多个不同类型的方法调用的时候。我们需要使用委托。

    委托和接口的区别。(自我理解)

    委托在乎事件的完成结果,不在乎过程,也就是不需要调用方法中的属性,而接口更多的在乎在完成过程中,方法的存在很多类似的属性成员及完成方法存在很多相似步骤,考虑接口

    何时使用同步和异步

    不建议多开一个线程异步调用,当委托给的方法和现有的程序耦合性很低,且执行较为复杂。负荷很大。可以考虑异步调用。

  • 相关阅读:
    计算机组成原理期末第十章【计算部分】
    计算机组成原理期末第六章【计算部分】
    快速傅里叶变换总结
    Graph 题解
    NOI 赛前复习旧题 & 复习知识点计划
    Party 题解
    洛谷 P7054 [NWRRC2015]Graph 题解
    CF1542D Priority Queue 题解
    Codeforces Round #701 (Div. 2) E. Move and Swap
    常微分方程
  • 原文地址:https://www.cnblogs.com/shikyoh/p/2397641.html
Copyright © 2011-2022 走看看