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

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

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

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

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

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

下面是我写的代码:

 /*Author:liulei
*Des:异步编程测试
*Date:2013-10-29
*/
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading;
using Microsoft.Practices.EnterpriseLibrary.Data; namespace AsyncApplication
{
class Program
{ static void Main(string[] args)
{
Console.WriteLine("主程序开始!");
Func<int> caller = new Func<int>(CreateUser);
Console.WriteLine("异步开始!");
IAsyncResult ar = caller.BeginInvoke(new AsyncCallback(CallBackMethod), caller);
caller.EndInvoke(ar);
Console.WriteLine("主程序完成!");
} //回调方法
static void CallBackMethod(IAsyncResult ar)
{
Func<int> a = (Func<int>)ar.AsyncState;
int result = a.EndInvoke(ar);//这样是可以获取异步的返回值,可是进行到这里,回调程序就结束了,不会执行下面程序!
Console.WriteLine("回调完成!");
}
//创建用户
static int CreateUser()
{
Database db = CreateDatabase();
string sql = "insert into [User] (Name,Password) values (@Name,@Password);select @@identity";
DbCommand dc = db.GetSqlStringCommand(sql);
db.AddInParameter(dc, "@Name", DbType.String, "zhaoliang");
db.AddInParameter(dc, "@Password", DbType.String, "");
var ob = db.ExecuteScalar(dc);
return Convert.ToInt16(ob); }
//创建Database
static Database CreateDatabase()
{
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
return db;
}
}
}

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

最新文章

  1. mac显示隐藏文件
  2. CIImage实现滤镜效果
  3. UltraEdit 所有快捷键 说明
  4. Main.storyboard中使用navigationController
  5. ubuntu定时执行脚本(crond)
  6. openwrt的路由器重置root密码
  7. 13年7月memory point
  8. MapReduce 计算模型
  9. R语言常用基础知识
  10. Head First --- Python 第一章
  11. Android App Widget的简单使用
  12. sqlserver存储过程学习笔记(一)基础知识篇(全)
  13. 【1414软工助教】团队作业5——测试与发布(Alpha版本) 得分榜
  14. dropzone.js使用实践
  15. dubbo 使用zookeeper 出现 Dubbo客户端调用报错NullPointerException
  16. 解决vue webApp使用lib-flexible和px2rem引用第三方ui库后,样式变小问题
  17. python 9
  18. SSL证书问题汇总
  19. Jmete ----r默认报告优化
  20. j2se j2ee j2me

热门文章

  1. 记录一些在用wcf的过程中走过的泥巴路 【第一篇】
  2. 0004 plsql的安装
  3. jquery最常用的几个方法。
  4. shell脚本实现随机筛选
  5. android java substring说明
  6. css3中变形与动画(一)
  7. Java修饰符public,private,protected及默认的区别
  8. POJ1849Two[DP|树的直径](扩展HDU4003待办)
  9. import
  10. SQL——查询考试