zoukankan      html  css  js  c++  java
  • 异步调用

    因为程序运行速度比较慢,所以要把长时间运行的代码进行异步处理。所以做了一个如下的测试:

    Using directives

    namespace testASycCall
    {
        
    public delegate void AsyncCaller();
        
    class Program
        
    {
            
    void Call0()
            
    {
                Console.WriteLine(
    "Call0:Begin");
                System.Threading.Thread.Sleep(
    2000);
                Console.WriteLine(
    "Call0:End");
            }


            
    void Call1()
            
    {
                Console.WriteLine(
    "Call1:Begin");
                System.Threading.Thread.Sleep(
    2000);
                Console.WriteLine(
    "Call1:End");
            }



            
    static void Main(string[] args)
            
    {
                Program p 
    = new Program();
                Console.WriteLine(
    "ready async call0");
                AsyncCaller ac 
    = new AsyncCaller(p.Call0);
                Console.WriteLine(
    "invoke async call0");
                IAsyncResult ar 
    = ac.BeginInvoke(nullnull);
                Console.WriteLine(
    "call call1");
                p.Call1();
                Console.WriteLine(
    "call1 end");
                Console.WriteLine(
    "wait call 0 end");
                ar.AsyncWaitHandle.WaitOne();
                Console.WriteLine(
    "call 0 end");
            }

        }

    }


    程序运行结果如下:

    ready async call0
    invoke async call0
    call call1
    Call0:Begin
    Call1:Begin
    Call0:End
    Call1:End
    call1 end
    wait call 0 end
    call 0 end

    看起来并行的还比较明显!

    相同的例子在MSDN上面也有,如果你机器上装了MSDN的话,可以到这里看到原文。不过俺的例子好像比它的更明显些

  • 相关阅读:
    备忘录模式
    观察者模式
    状态模式
    模板方法模式
    策略模式
    装饰者模式
    访问者模式
    工作那些事(二十七)项目经理在项目中是什么角色?
    工作那些事(二十六)个人和团队
    工作那些事(二十五)项目经理与产品经理
  • 原文地址:https://www.cnblogs.com/BigTall/p/63945.html
Copyright © 2011-2022 走看看