关于VB.net Timer控件与多线程问题

我在调用某一过程的时候,因时间较长,需要给用户以“数据加载中”的提示,想用Timer做成动态的形式。但是在调用的时候,Timer似乎不响应,有没有高手能指定一二?Impo... 我在调用某一过程的时候,因时间较长,需要给用户以“数据加载中”的提示,想用Timer做成动态的形式。
但是在调用的时候,Timer 似乎不响应,有没有高手能指定一二?

Imports System.Threading
Public Class Form1
Dim nn As Integer
Public Delegate Sub VoidDelegate1()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Visible = True
Dim th As New Threading.Thread(AddressOf MyThreadProc)
th.Start()
For i As Integer = 0 To 1000
For i1 As Integer = 0 To 1000000
'假设为执行其他代码
Next
Next
Label2.Text = "执行完毕"
Label1.Visible = False

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If nn <= 5 Then
nn = nn + 1
Label1.Text = Label1.Text & "."
Else
nn = 0
Label1.Text = "数据加载中"
End If
End Sub

Public Sub MyThreadProc()
'更新ui资源例子
Me.Invoke(New VoidDelegate1(AddressOf UpdateText))
End Sub

Public Sub UpdateText()
'实际更新界面
Timer1.Enabled = True
End Sub

End Class
展开
 我来答
tianlidon
推荐于2016-04-17 · TA获得超过1219个赞
知道小有建树答主
回答量:676
采纳率:85%
帮助的人:107万
展开全部
Timer 是在 主线程里执行的,Thread 是在自己的线程中执行的,多核心的CPU使用线程能提高处理能力。回到你的问题,主线程如果卡死,timer就会失去响应,很正常的。请使用System.Timers.Timer类吧。请参考一下:
http://developer.51cto.com/art/200910/159113.htm
追问
不好意思,能不能给一个简单的实例?
追答
回头我给你做一个吧。今天快下班了,麻烦采纳喔~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式