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

            }

        }


    }


  • 相关阅读:
    实习差不多一个月了
    多一个角度,多一分收获
    走出第一步
    .net中枚举enum的复习与实例
    瞧瞧UC浏览器对CSS样式的“关怀”
    关于cookie(基础)
    用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]
    [转载] SQL进行排序、分组、统计的10个新技巧
    css样式解决圆角等多种难解决的问题 (转载至:Lanny☆兰东才)
    让人想不通的突然button事件失灵了?(小心页面form表单嵌套)
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/927920.html
Copyright © 2011-2022 走看看