Beacher-

c# 委托之异步调用delegate

在很多情况下,我们会遇到这种情况,比如做一些日志性质的操作记录,或者数据大批量插入数据库或者其他操作,这个时候用户本身不能等在这里,等执行完之后之后在操作其他的,而是需求异步进行这些操作,所以用到一些异步操作的方法,但是都是根据当时的环境而定用那个形式webservice,thread,委托....等等,

本文中使用的为委托--异步操作, 我们直接上列子,一个往数据库操作的列子 

public delegate int DInsertTable(UserModel user)

static void Main(string[] args)

{

  UserModel user=new UserModel('llll',23,'164949494')

  //指定委托函数

  DInsertTable d=new DInsertTable(InsertTable);

  //异步操作 user参数 第二个为回调函数,当委托执行完成之后会调用这个回调函数,可以在里边写自己相对应的代码

  d.BeginInvoke(user,new AsyncCallback(GoBack),null);

}

//执行方法

static bool InsertTable(UserModel user)

{

  //自己的数据操作代码

  return true

}

static void GoBack(IAsyncResult isa)

{

    AsyncResult a = (AsyncResult)isa;
            Ad ad=(Ad)a.AsyncDelegate;
            Console.WriteLine("执行完成,返回结果是"+ad.EndInvoke(isa));

}

 

 

posted on 2012-02-27 15:22  Beacher-  阅读(315)  评论(0编辑  收藏  举报

导航