zoukankan      html  css  js  c++  java
  • c# 异步线程

    using System;
    using System.Collections.Generic;
    using System.Runtime.Remoting.Messaging;
    using System.Threading;
    
    namespace asyncResult
    {
        delegate long myDel(int first,int second);
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Main begin");
                IAsyncResult iar =  new myDel(Sum).BeginInvoke(3, 5, CallBackAsyn, null);
                Console.WriteLine("Doing more work in Main");
                Thread.Sleep(500);
                Console.WriteLine("Done with Main Exiting");
    
            }
    
            static long Sum(int first, int second)
            {
                Console.WriteLine("delete method Begin");
                Thread.Sleep(100);
                return first + second;
            }
    
            //怎么确保回调函数是由哪个异步线程发起的? 
            //这就是为什么需要用IAsyncResult接口的原因,IAsyncResult接口对象在AsyncResult 类对象内部,AsyncResult包含委托对象引用
            static void CallBackAsyn(IAsyncResult iar)
            {
                Console.WriteLine("CallBackFn asyncResult Begin");
                AsyncResult ar = (AsyncResult)iar;
                myDel del = (myDel)ar.AsyncDelegate;
                Console.WriteLine("CallBackFn asyncResult result is:{0}",del.EndInvoke(iar));
            }
        }
    }

  • 相关阅读:
    声明式事务编程
    PlatformTransactionManager
    编码式事务
    事务的ACID
    struts2的工作原理
    通过Callable接口实现多线程
    Struts2 标签
    Struts2基础
    MySQL性能优化(十)-- 主从复制(一主多从)
    JVM学习(一)
  • 原文地址:https://www.cnblogs.com/y112102/p/3068209.html
Copyright © 2011-2022 走看看