WEB开发网
开发学院软件开发VC 为Windows应用创建简单的异步调用模式 阅读

为Windows应用创建简单的异步调用模式

 2007-09-01 21:35:00 来源:WEB开发网   
核心提示: 无论如何,尽量使用户界面线程处理的异步调用模式简单化,为Windows应用创建简单的异步调用模式(2),我已经实现了一个与Visual Studio 2005里某个特性类似的简单异步调用模式,作为开始,private void SomeUIEvent( object sender, Eve

无论如何,尽量使用户界面线程处理的异步调用模式简单化,我已经实现了一个与Visual Studio 2005里某个特性类似的简单异步调用模式。作为开始,我们首先解释一下当前.NET Framework中异步调用模式的工作原理。

.NET异步调用模式

系统生成的Web服务代理类的每个Web函数都有一个Begin和一个End方法,每个支持.NET Framework异步调用模式的对象都和这个类似。开始进行异步调用时,客户端调用Begin方法时就立即响应,或者在建立了访问Web服务的独立线程后马上响应。在这之后的某个时间,当Web服务访问完成后,客户端再调用End方法。

但客户端如何知道什么时候调用End方法呢?Begin方法会返回一个IAsyncResult对象,可以帮助你跟踪异步调用的过程,也可以明确的等待后台线程完成,但如果在用户界面线程中进行这些工作,会降低整个系统的同步性。更好的方法是,在用户界面进程中注册一个回调函数,当其它工作完成时产生一个自动通知。

让我们看一段样例代码,在这段代码中,我们从一个Web服务中获取一些客户数据,这些功能通过Web服务代理类里的GetCustomerData方法完成。我们可以启动这个Web服务调用,并且用以下代码注册一个回调函数,用来在用户界面线程中产生与应用程序进行交互的功能。

private void SomeUIEvent( object sender, EventArgs e )
{
  // Create a callback delegate so we will
  // be notified when the call has completed.
  AsyncCallback callBack = new
   AsyncCallback( CustomerDataCallback );
  // Start retrieving the customer data.
  _proxy.BeginGetCustomerData( "Joe Bloggs", callBack, null );
}

Web服务调用最终返回CustomerDataCallback方法,在这个方法中,我们需要调用真正用于获取客户数据的Web服务代理类中的End方法,这个方法可以实现如下:

上一页  1 2 3 4 5  下一页

Tags:Windows 应用 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接