zoukankan      html  css  js  c++  java
  • 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);

            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 需要保存 IAsyncResult 对象以便后边条用EndInvoke方法时作参数传递</span>
            IAsyncResult asyncResult = del.BeginInvoke(<span style="color: #800080;">5</span>, <span style="color: #800080;">6</span>, <span style="color: #0000ff;">null</span>, <span style="color: #0000ff;">null</span><span style="color: #000000;">);
    
            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 做某些其它的事情,模拟需要执行 3 秒钟</span>
            <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = <span style="color: #800080;">1</span>; i &lt;= <span style="color: #800080;">3</span>; i++<span style="color: #000000;">)
            {
                Thread.Sleep(TimeSpan.FromSeconds(i));
                Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">{0}: Client executed {1} second(s).</span><span style="color: #800000;">"</span><span style="color: #000000;">, Thread.CurrentThread.Name, i);
            }
    
            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 传递 IAsyncResult 对象</span>
            <span style="color: #0000ff;">int</span> rtnVal =<span style="color: #000000;"> del.EndInvoke(asyncResult);
            Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Result: {0}
    </span><span style="color: #800000;">"</span><span style="color: #000000;">, rtnVal);
    
            Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">
    Press any key to exit...</span><span style="color: #800000;">"</span><span style="color: #000000;">);
            Console.ReadLine();
    
        }
    
        </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">delegate</span> <span style="color: #0000ff;">int</span> AddDelegate(<span style="color: #0000ff;">int</span> a, <span style="color: #0000ff;">int</span><span style="color: #000000;"> b);
    
        </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Cal
        {
            </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> Add(<span style="color: #0000ff;">int</span> a, <span style="color: #0000ff;">int</span><span style="color: #000000;"> b)
            {
                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (Thread.CurrentThread.IsThreadPoolThread)
                {
                    Thread.CurrentThread.Name </span>= <span style="color: #800000;">"</span><span style="color: #800000;">Pool Thread</span><span style="color: #800000;">"</span><span style="color: #000000;">;
                }
                Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Method invoked!</span><span style="color: #800000;">"</span><span style="color: #000000;">);
    
                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 做某些其它的事情,模拟需要执行 2 秒钟</span>
                <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = <span style="color: #800080;">0</span>; i &lt; <span style="color: #800080;">2</span>; i++<span style="color: #000000;">)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(</span><span style="color: #800080;">1</span><span style="color: #000000;">));
                    Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">{0}: Add executed {1} second(s).</span><span style="color: #800000;">"</span><span style="color: #000000;">, Thread.CurrentThread.Name, i);
                }
                Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Method complete!</span><span style="color: #800000;">"</span><span style="color: #000000;">);
                </span><span style="color: #0000ff;">return</span> a +<span style="color: #000000;"> b;
            }
        }
    }
    

    }

    复制代码

  • 相关阅读:
    apicloud图片上传
    APICloud上啦加载下拉刷新模块
    APICloud 获取缓存以及清除缓存(常用第三方方法)
    微信小程序跳转以及跳转的坑
    微信小程序,时间戳和日期格式互相转化
    微信小程序template使用
    APICloud开发小技巧(二)
    javax.persistence.TransactionRequiredException: Executing an update/delete query
    Spring的注解@Qualifier用法
    Spring @Service生成bean名称的规则
  • 原文地址:https://www.cnblogs.com/owenzh/p/13266918.html
Copyright © 2011-2022 走看看