注册 登录
编程论坛 VB.NET论坛

计时器的问题

xiangyue0510 发布于 2016-04-13 16:19, 3178 次点击
我想在想要做一个启动界面,启动的时候需要检查配置文件这些是否正常,在左下角显示检查的项目和结果
但是一些项目检查的时候会比较长度,所以我定义了一个Timer,在运行的时候自动在后面加“.”,超过一定数量,又从0个开始
比如说:
测试数据库连接
测试数据库连接.
测试数据库连接..
测试数据库连接...
测试数据库连接....
测试数据库连接.....
测试数据库连接.
测试数据库连接..

下面是代码,当然是简化过的。调试发现,执行时候,Timer2—》 CheckALL-》Timer2, 不是Timer2和CheckALL同时进行

求大神解决。

 
程序代码:
Private Sub FormLaunch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer2.Interval = 200
        Timer2.Enabled = True
        CheckALL()
  End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        If Label1.Text = "" Then Exit Sub
        Dim i As Integer
        i = InStrRev(Label1.Text, ":")
        Dim s1, s2 As String
        s1 = Strings.Left(Label1.Text, i)
        s2 = Strings.Right(Label1.Text, Len(Label1.Text) - i)
        If InStr(s2, ".") > 0 Or s2 = "" Then
            If Len(s2) < 5 Then
                s2 = s2 & " ."
            Else
                s2 = 0
            End If
        End If
        Label1.Text = s1 & s2
        Label1.Refresh()
    End Sub

  CheckALL()
   ’Step-1
   Lable1.text="检查配置文件:"
    …… 此处无数代码跑过
   Lable1.text="检查配置文件:正常"
  
   ’Step-2
   Lable1.text="检查数据库连接:"
    …… 此处无数代码跑过
   Lable1.text="检查数据库连接:正常

   'Step-3
    ……
   'Step-4
   ……
End Sub
2 回复
#2
不说也罢2016-04-13 16:52
三点建议,希望对你有用:
一、无须使用计时器,假设你有10个STEP,定义10个函数,按顺序执行,每执行完一个,调用下一个函数。定时器中的任务,可以交给Label1_TextChanged事件中执行;
二、.NET的backgroundworder控件,楼主没用过么?计时器工作的时候,可以委托另一个独立的线程去做其它任务;
三、创建Thread,多线程操作
#3
xiangyue05102016-04-14 10:20
嗯。我之前一直用的是VB,毕竟net太大了,一般的使用懒得装。才接触net几个月而已。
我昨天尝试了一下system.threading,失败了
不过现在用你说的backgroundworker实现了,十分感谢
1