• BeginInvoke()使用


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Xml;
    using System.Threading;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Client application is starting!");
                Thread.CurrentThread.Name = "Main Thread";
                Cal cal = new Cal();
                AddDelegate del = new AddDelegate(cal.Add);
     
                // 需要保存 IAsyncResult 对象以便后边条用EndInvoke方法时作参数传递
                IAsyncResult asyncResult = del.BeginInvoke(5, 6, null, null);
     
                // 做某些其它的事情,模拟需要执行 3 秒钟
                for (int i = 1; i <= 3; i++)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(i));
                    Console.WriteLine("{0}: Client executed {1} second(s).", Thread.CurrentThread.Name, i);
                }
     
                // 传递 IAsyncResult 对象
                int rtnVal = del.EndInvoke(asyncResult);
                Console.WriteLine("Result: {0}
    ", rtnVal);
     
                Console.WriteLine("
    Press any key to exit...");
                Console.ReadLine();
     
            }
     
            public delegate int AddDelegate(int a, int b);
     
            public class Cal
            {
                public int Add(int a, int b)
                {
                    if (Thread.CurrentThread.IsThreadPoolThread)
                    {
                        Thread.CurrentThread.Name = "Pool Thread";
                    }
                    Console.WriteLine("Method invoked!");
     
                    // 做某些其它的事情,模拟需要执行 2 秒钟
                    for (int i = 0; i < 2; i++)
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(1));
                        Console.WriteLine("{0}: Add executed {1} second(s).", Thread.CurrentThread.Name, i);
                    }
                    Console.WriteLine("Method complete!");
                    return a + b;
                }
            }
        }
    }
  • 相关阅读:
    分布式系统之CAP理论杂记
    RPC详解
    玩转zookeeper命令
    NRPE介绍
    开启irqbalance提升服务器性能
    xinetd被动服务唤醒
    服务发现的基本原理[转]
    关于TCP/IP,必知必会的十个经典问题[转]
    Smart Client技术简要总结
    使用ng-grid实现可配置的表格
  • 原文地址:https://www.cnblogs.com/YzpJason/p/6852822.html
Copyright © 2020-2023  润新知