| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> VB.NET >> VB.NET技术资料 >> 正文
  ►  Visual Basic .NET实现后台处理
Visual Basic .NET实现后台处理
作者:未知    阅读人次:……    文章来源:不详    发布时间:2004-10-8    网友评论()条
 

  例外情况是工作线程被激活之前或完成之后,UI代码可以与Worker对象交互。在工作线程启动前,UI代码能建立和初始化Worker对象;在工作线程被终止后,UI可以从Worker对象检索到任意值。下面是UI角度的的事件流程:

  1、建立Worker对象。

  2、初始化Worker对象。

  3、调用控制器启动工作线程。

   a.Worker对象能通过控制器向UI发送状态信息。

   b.UI能通过控制器向Worker对象发送“取消”请求。

  4、当Worker对象结束后它通过控制器通知UI。

  5、值可以直接从Worker对象检索到。

  除了工作线程活动时,UI代码不能直接与Worker对象交互外,对UI来说没有特殊的代码需求。当后台处理在运行时UI保持活动并响应用户。

  Worker对象角度的事件流程如下:

  1、UI代码创建Worker对象。

  2、UI代码使用需要的值来初始化Worker对象。

  3、控制器创建后台线程并调用Worker对象的方法。

   a. Worker对象运行工作代码。

   b. 对象将任何状态信息传递给控制器,这样控制器才能将信息传递给UI。

   c. 适当时,Worker对象查看是否有“取消”请求,如果有,就停止。

   d. 当Worker对象完成后,它告诉控制器工作已经结束,这样控制器可以将该信息传递给UI。

  4、现在工作线程终止,UI能直接与Worker对象交互。

  由于工作代码只与控制器交互,我们不用担心工作线程突然与UI组件交互,而这种偶然的交互可能影响应用程序。另外,工作代码依赖于控制器才能与UI线程正确地通信,因此它们都是安全的。

  这意味着我们在工作代码中不需要处理任何线程的问题,而只需要处理Worker对象的实例变量。

  考虑不同组件,特别是在不同线程上的不同组件之间的交互通常最好使用图。Microsoft? Visio?支持建立UML(通用建模语言)图,它对我们非常有帮助。

  下面是阐明UI、Worker对象和Controller之间事件流程的UML序列图。该图假定没有“取消”请求。所有的代码在UI线程上运行。


         图2:过程流序列图

  了解相同信息的另一种方法是使用UML行为图。这一类图更注重事务而不是对象,因此它显示了事务发生的步骤和过程是怎样一步一步地进行的。我们可以轻易地看出UI代码在左边的线程中工作,而Worker对象在右边的另一个线程中工作。Worker对象在另一个线程中运行之前和之后,它可以被UI直接地使用,进行初始化,然后检索结果。


      图3:显示过程流的行为图

  使用这类图能帮我们查明后台线程活动时UI与工作线程偶然交互的地方。任何偶然的交互都需要额外的代码来避免bug影响应用程序的稳定性。理想的情况是,这样的交互通过Controller组件发送,在那儿(Controller中)包含使这种交互安全的所有代码。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子