zoukankan      html  css  js  c++  java
  • net异步编程

    .net异步编程

    现在电脑大部分都是多核心,在处理多线程方便有很大优势,异步调用方法的时候可以立即返回执行其他程序,进行异步编程会让程序运行效率更高。

     

    我也是刚刚关注异步编程方面知识,也有很多不是很理解,所以想向大神请教关于.net异步编程的一些问题。

     

    1、异步编程原理,主程序和异步程序还有回调函数分别什么线程上,执行顺序?

     

    2、怎么使回调函数获取异步返回值,并在回调完毕后关闭主程序?

     

    3、能否主程序结束,异步程序还可以继续执行,执行完毕后执行回调?

     

    4、异步编程实际应用的作用如何,真正能带来多大好处?想用异步编程,如何更好的运用?

     

    下面是我写的代码:

     

    复制代码
     1 /*Author:liulei
     2  *Des:异步编程测试
     3  *Date:2013-10-29
     4  */
     5 using System;
     6 using System.Collections.Generic;
     7 using System.Data;
     8 using System.Data.Common;
     9 using System.Linq;
    10 using System.Text;
    11 using System.Threading;
    12 using Microsoft.Practices.EnterpriseLibrary.Data;
    13 
    14 namespace AsyncApplication
    15 {
    16     class Program
    17     {
    18 
    19         static void Main(string[] args)
    20         {
    21             Console.WriteLine("主程序开始!");
    22             Func<int> caller = new Func<int>(CreateUser);
    23             Console.WriteLine("异步开始!");
    24             IAsyncResult ar = caller.BeginInvoke(new AsyncCallback(CallBackMethod), caller);
    25             caller.EndInvoke(ar);
    26             Console.WriteLine("主程序完成!");
    27         }
    28 
    29         //回调方法
    30         static void CallBackMethod(IAsyncResult ar)
    31         {
    32             Func<int> a = (Func<int>)ar.AsyncState;
    33             int result = a.EndInvoke(ar);//这样是可以获取异步的返回值,可是进行到这里,回调程序就结束了,不会执行下面程序!
    34             Console.WriteLine("回调完成!");
    35         }
    36         //创建用户
    37         static int CreateUser()
    38         {
    39             Database db = CreateDatabase();
    40             string sql = "insert into [User] (Name,Password) values (@Name,@Password);select @@identity";
    41             DbCommand dc = db.GetSqlStringCommand(sql);
    42             db.AddInParameter(dc, "@Name", DbType.String, "zhaoliang");
    43             db.AddInParameter(dc, "@Password", DbType.String, "456");
    44             var ob = db.ExecuteScalar(dc);
    45             return Convert.ToInt16(ob);
    46             
    47         }
    48         //创建Database
    49         static Database CreateDatabase()
    50         {
    51             Database db = DatabaseFactory.CreateDatabase("ConnectionString");
    52             return db;
    53         }
    54     }
    55 }
    复制代码

     

    大家有什么关于异步编程好的理解,可以提出来大家一起讨论学习,谢谢。

     

     

     

     

     

     
    标签: 异步编程

  • 相关阅读:
    实现粘贴WORD图片的在线编辑器
    js实现大文件分片上传的工具
    Nginx实现大文件分片上传的方法
    百度WebUploader实现大文件分片上传的方法
    ckeditor粘贴上传图片
    umediter实现粘贴word图片
    java.net.Socket
    matlab创建对角型矩阵
    QtList
    matlab矩阵行最简形
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3394834.html
Copyright © 2011-2022 走看看