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(
    "异步任务完成");
                }

            }

        }


    }


  • 相关阅读:
    hash表学习笔记
    【学习笔记-集合】HashMap 源码浅析
    java 同步
    学习SpringBoot了
    记录一些好的 学习网站
    Idea 的页面布局设定,tomcat及普通web项目设定
    Spring 札记
    java面试题(基础+非基础)[不定期更新]
    maven 使用
    ant 生成报告时报错,Errors while applying transformations: Fatal error during transformation
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/927920.html
Copyright © 2011-2022 走看看