.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 }
复制代码

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

posted @   枫小子  阅读(2075)  评论(11编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示