下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → 在 Visual Basic .NET 中实现后台进程__教程
在 Visual Basic .NET 中实现后台进程__教程
日期:2007-5-20 1:14:28 人气:359     [ ]
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
' 从辅助线程调用,以表明出现故障
' 这将触发对包含异常对象的 UI 的
' 方法调用 - 该调用是在 UI 线程上
' 进行的
Private Sub Failed(ByVal e As Exception) _
Implements IController.Failed

Dim disp As New FailedDelegate(_
AddressOf CType(mClient, IClient).Failed)
Dim ar() As Object = {e}

' 在 UI 线程上调用客户端窗体
' 以表明出现故障
mClient.Invoke(disp, ar)

End Sub

' 从辅助线程上调用,以指出完成的百分比
' 值将转到 Controller,由 UI 在需要时读取
Private Sub SetPercent(ByVal Percent As Integer) _
Implements IController.SetPercent

mPercent = Percent

End Sub

' 从辅助线程调用,以表明已完成
' 我们还传递参数,以表明是否真正完成,
' 以及是否取消在 UI 线程上进行的对 UI
' 的调用
Private Sub Completed(ByVal Cancelled As Boolean) _
Implements IController.Completed

mRunning = False
Dim comp As New CompletedDelegate( _
AddressOf CType(mClient, IClient).Completed)
Dim ar() As Object = {Cancelled}

' 调用 UI 线程上的客户端窗体
' 以表明已完成
mClient.Invoke(comp, ar)

End Sub

' 表明是否仍在运行或是否已请求取消
' 这将在辅助线程上进行调用,因此
' 辅助代码可以查看它是否应该正常
' 退出
Private ReadOnly Property Running() As Boolean _
Implements IController.Running
Get
Return mRunning
End Get
End Property

#End Region

Failed 和 Completed 方法利用窗体的 Invoke 方法。例如,Failed 方法可以执行以下操作:

Dim disp As New FailedDelegate(_
AddressOf CType(mClient, IClient).Failed)
Dim ar() As Object = {e}

' 调用 UI 线程上的客户端窗体
' 以表明出现故障
mClient.Invoke(disp, ar)

首先创建一个委托,从 IClient 接口指向客户端窗体的 Failed 方法。然后声明包含向方法传递参数值的 Object 类型数组。最后调用客户端窗体的 Invoke 方法,将委托指针和参数数组传递给窗体。

窗体将在 UI 线程(窗体在这里可以安全运行以更新显示)上使用这些参数调用此方法。

整个进程是同步进行的,即对窗体进行调用时辅助线程将停止。尽管可以在显示错误消息或完成消息时停止辅助线程,但我们并不希望显示每个小状态时都停止辅助线程。

为了避免显示状态时停止辅助线程,Display 方法将使用 BeginInvoke,而不使用 Invoke。BeginInvoke 使窗体上的方法调用异步进行,这样辅助线程可以一直保持运行状态,不需要等待窗体上的显示方法完成:

Dim disp As New DisplayDelegate( _
AddressOf CType(mClient, IClient).Display)
Dim ar() As Object = {Text}

' 调用 UI 线程上的客户端窗体
' 以更新显示
mClient.BeginInvoke(disp, ar)

以这种方式使用 BeginInvoke 可以防止辅助线程停止,使辅助线程具有尽可能高的性能。

ActivityBar 控件
最后,我们来创建显示动画点的 ActivityBar 控件。

在名为 ActivityBar 的项目中添加一个用户控件。

将该控件的宽度调整为约 110,高度调整为约 20。可以通过拖动边界进行调整,也可以通过在 Properties(属性)窗口中设置 Size 属性进行调整。

其余的操作将通过代码完成。要创建一系列在显示时不停闪烁的动画“灯”,可以使用带有 Timer 控件的一系列 PictureBox 控件。每次 Timer 控件关闭时,我们将使下一个 PictureBox 呈绿色显示,并将已经呈绿色显示的 PictureBox 更改为窗体的背景色。

将 Windows Forms(Windows 窗体)选项卡中的 Timer 控件放入窗体中,然后将其名称更改为 tmAnim。同时将 Interval 属性设置为 300,以获得较好的动画速度。

顺便说一句,Components(组件)选项卡中有一个不同的 Timer 控件。它是一个多线程计时器。也就是说,该计时器将在后台线程中引发 Elapsed 事件,而不是象 Windows 窗体计时器那样在 UI 线程上引发 Elapsed 事件。建立 UI 时这种方法通常会产生相反的效果,因为 Elapsed 事件中的代码显然不能直接与我们的 UI 进行交互。

现在,在控件中添加以下代码:

Private mBoxes As New ArrayList()
Private mCount As Integer

Private Sub ActivityBar_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

Dim index As Integer

If mBoxes.Count = 0 Then
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.