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



  建立Worker

  前面我们看到了一个简单的Worker类。我们已经定义IWorker接口,现在能利用已经建立的Controller来增强该类。

  首先建立Background.dll文件。这一步很重要,如果没有的话,我们在建立测试窗体时,ActivityBar控件不会在Toolbox上出现。

  给解决方案添加一个叫bgTest的Windows窗体应用程序项目,将它设置为启动项目。

  接着使用Add References 对话框的 Projects页来添加对Background项目的引用。

Imports Background

Public Class Worker Implements IWorker
Private mController As IController
Private mInner As Integer
Private mOuter As Integer
Public Sub New(ByVal InnerSize As Integer, ByVal OuterSize As Integer)
 mInner = InnerSize
 mOuter = OuterSize
End Sub
'被controller调用,这样可以得到一个controller的指针。

Private Sub Init(ByVal Controller As IController) _
Implements IWorker.Initialize
mController = Controller
End Sub

Private Sub Work()
Implements IWorker.Start
Dim innerIndex As Integer
Dim outerIndex As Integer
Dim value As Double
Try
For outerIndex = 0 To mOuter
If mController.Running Then
mController.Display("Outer loop " & outerIndex & " starting") mController.SetPercent(CInt(outerIndex / mOuter * 100))
Else
'有"取消"请求
mController.Completed(True)
Exit Sub
End If

For innerIndex = 0 To mInner
'在此处作一些cool运算
value = Math.Sqrt(CDbl(innerIndex - outerIndex))
Next
Next
mController.SetPercent(100)
mController.Completed(False)
Catch e As Exception mController.Failed(e) End Try

End Sub

End Class

  我们添加了Init方法来执行IWorker.Initialize。Controller调用该方法,这样就有了一个Controller对象的指针。

  我们将Work方法改为私有(Private),仅仅用于执行IWorker.Start方法。该方法将在工作线程上运行。

  Work方法使用Try..Catch块得到了加强,这样我们能捕捉任何错误并使用Controller的Failed方法将错误返回到UI。

  假定代码能运行,在该代码运行时,我们调用Controller对象的Display和SetPercent方法来更新状态和完成百分比。

  我们也周期性地检查Controller对象的Running属性来查看是否有"取消"请求。如果有,就停止处理并显示由于有"取消"请求而完成。

  建立显示窗体

  最后建立一个窗体来启动和取消后台处理。它也显示活动和状态信息。

  给窗体添加两个按钮(btnStart和btnRequestCancel)、两个label(Label1和Label2)、一个ProgressBar(ProgressBar1)和ActivityBar (ActivityBar1),如图7所示:


    图7:Form1的布局

  窗体需要执行IClient,这样Controller控件才能与它交互。

  Imports Background Public Class Form1 Inherits System.Windows.Forms.Form Implements IClient窗体也需要一个Controller对象和一个标志来追踪后台处理是活动的或完成了。

  Private mController As New Controller(Me) Private mActive As Boolean

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

 

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

  • 下一篇文章:

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