.net异步编程_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .net异步编程

.net异步编程

 2013/10/29 11:58:17  枫小子  博客园  我要评论(0)
  • 摘要:想向大神请教关于.net异步编程的问题。1、异步编程原理,主程序和异步程序还有回调函数分别什么线程上,执行顺序?2、怎么使回调函数获取异步返回值,并在回调完毕后关闭主程序?3、能否主程序结束,异步程序还可以继续执行,执行完毕后执行回调?4、异步编程实际应用的作用如何,真正能带来多大好处?想用异步编程,如何更好的运用?下面是我写的代码:1/*Author:liulei2*Des:异步编程测试3*Date:2013-10-294*/5usingSystem;6usingSystem
  • 标签:.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 }

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

发表评论
用户名: 匿名