zoukankan      html  css  js  c++  java
  • 异步方式调用同步方法

    一段异步方式调用同步方法代码

    执行顺序   执行主程序>>执行异步调用>>执行WaitOne()后代码>>执行回调>>执行主程序

    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Collections;
    using System.Threading;
    using System.IO;
    using System.Runtime.InteropServices;
    using System;
    using System.Runtime.Remoting.Messaging;

    namespace Program
    {
        
    public class Programmers
        
    {

            
    public static void Main(string[] args)
            
    {
                Programmers pr 
    = new Programmers();
                Console.WriteLine(
    "开始执行..");
                pr.smork();
                Thread.Sleep(
    1000);//注释掉结果有点不同
                Console.WriteLine("我是主线程");
                Console.ReadLine();


            }

            
    delegate void mydelegate();
            
    private void smork()
            
    {
                
    ///异步方式调用同步方法1

                AsyncCallback mycallback 
    = new AsyncCallback(tellyou);//(回调函数)
                mydelegate mdg = new mydelegate(move);
                IAsyncResult result 
    = mdg.BeginInvoke(mycallback, null);
                result.AsyncWaitHandle.WaitOne();
    //等待异步完成

                Console.WriteLine(
    "异步调用后");

                
    MyRegion

            }


            
    public void move()
            
    {
                
    for (int i = 0; i < 5; i++)
                
    {
                    Console.WriteLine(
    "异步任务执行");
                    Thread.Sleep(
    1000);

                }


            }


            
    public void tellyou(IAsyncResult result)//回调函数
            {
               
    // Console.WriteLine("异步任务完成");//当异步完成后输出结果 通知已经异步完了

                AsyncResult asyncResult 
    = result as AsyncResult;

                mydelegate mydelegate 
    = asyncResult.AsyncDelegate as mydelegate;
                mydelegate.EndInvoke(result);

                
    if (result.IsCompleted)
                
    {
                    Console.WriteLine(
    "异步任务完成");
                }

            }

        }


    }


  • 相关阅读:
    6.12
    20121006晴
    6.11
    测试利器IL级别的Debug工具“Deblector1.1.1修改版”
    Windows Phone开发经验谈(15)动态的改变APP的字体大小
    windows8开发直播windows8商店开发者帐号注册过程(完)
    Windows Phone开发经验谈(13)华为网盘直链API调用
    windows8开发App审核折腾记
    Asp.net开发经验利用Aspose.Words按模板导出Word
    Windows Phone开发经验谈(17)两则改善用户体验的开发技巧
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/927920.html
Copyright © 2011-2022 走看看