科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用VB2005构建反应灵敏的应用程序

用VB2005构建反应灵敏的应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 Visual Basic .NET中最突出的特色之一就是构造多线程应用程序。但由于多线程应用程序天然的复杂性及挑战性,使许多VB开发人员没有充分利用这一新提供的功能。

作者: 来源:中国IT实验室 2008年6月7日

关键字: 程序 构建 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件
前言
  
  Visual Basic .NET中最突出的特色之一就是构造多线程应用程序。但由于多线程应用程序天然的复杂性及挑战性,使许多VB开发人员没有充分利用这一新提供的功能。
  
  在了解Visual Basic 2005创建多线程应用程序是多么容易以前,让我们看一看通常程序开发人员所遇到的挑战:长时间运行的任务在执行过程中经常限制了用户的输入或使用户无法与操作系统进行交互。
  
  一、长时间运行的任务实例
  
  在这个实例中,我们将对一个规定的整数计算斐波纳契数列(每个数等与数列前两个数之和)。也许这个例子对开发人员开发应用程序来说用处不大,但它的确是一个非常合适的例子,它不需要开发人员具备数据库或是其他一些必须得知识。你想象的应用程序中的长时间运行的任务类型可能是耗时的数据库操作、遗传系统调用、外部服务调用或是其他的一些深层次的资源操作。
  
  为了创建这个项目,首先创建一个窗体应用程序,它带有一个进度条、两个按钮、一个数字输入框和一个显示结果的标签。两个按钮分别命名为startSyncButton 和cancelSyncButton,将标签的text属性设置为no result。对窗体上的各个控件进行仔细布局调整以后,界面效果如下:
  
 

  
图一、创建一个新的窗体应用程序

  
  在这个窗体中添加以下代码计算斐波纳契数列。
  
  Function ComputeFibonacci(ByVal n As Integer) As Long
  ’ The parameter n must be >= 0 and <= 91.
  ’ Fib(n), with n > 91, overflows a long.
  If n < 0 OrElse n > 91 Then
  Throw New ArgumentException( "value must be >= 0 and <= 91", "n")
  End If
  Dim result As Long = 0
  If n < 2 Then
  result = 1
  Else
  result = ComputeFibonacci(n - 1) + ComputeFibonacci(n - 2)
  End If
  ’ Report progress as a percentage of the total task.
  Dim percentComplete As Integer = CSng(n) / CSng(numberToCompute) * 100
  If percentComplete > highestPercentageReached Then
  highestPercentageReached = percentComplete
  Me.ProgressBar1.Value = percentComplete
  End If
  Return result
  End Function
  
  这段代码非常直观,它通过递归调用来计算结果。尽管在小数情况下这段代码将执行的非常快,但随着你输入的数字的增大,代码的执行时间迅速增加。
  
  每执行代码时,这个函数将更新一次屏幕上的进度条,以提醒用户当前程序进度及应用程序正在运行。
  
  现在我们将在开始按钮后面添加一小段代码来运行这个函数。
  
  Private Sub startSyncButton_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles startSyncButton.Click
  ’ Reset the text in the result label.