当前位置: 网学 > 编程文档 > VB > 正文

在Visual Basic .NET 中实现后台进程

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
bsp;  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
          '' 此处进行一些有意思的计算
          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

我们添加了能够实现 IWorker.Initialize 的 Init 方法。Controller 将调用此方法,因此以后我们可以引用 Controller 对象。

我们还将 Work 方法更改为 Private,只是为了实现 IWorker.Start 方法。此方法将在辅助线程上运行。

我们增强了 Work 方法,使其可以使用 Try..Catch 块。这样我们可以使用 Controller 上的 Failed 方法捕捉任何错误并将其返回给 UI。

假设代码正在运行,我们调用 Controller 对象的 Display 和 SetPercent 方法,使它们随着代码的运行更新其状态和完成的百分比。

我们还定期检查 Controller 对象的 Running 属性,查看是否存在取消请求。如果存在取消请求,则停止进程,并指示由于取消请求而停止操作。

创建显示的窗体
最后,我们可以创建窗体,将其用于启动或取消后台进程。该窗体还将显示活动和状态信息。

打开 Form1 的设计器并添加两个按钮(btnStart 和 btnRequestCancel)、两个标签(Label1 和 Label2)、一个 ProgressBar (ProgressBar1) 和一个 ActivityBar (ActivityBar1),如图 7 所示。



图 7:Form1 控件的布局

该窗体需要实现 IClient,以便 Controller 对象与之交互:

Imports Background

Public Class Form1
  Inherits System.Windows.Forms.Form

  Implements IClient

该窗体还需要 Controller 对
  • 上一篇资讯: VB关于日期的中文转换
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号