首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

线程不能操作Timer控件?该怎么解决

2012-01-05 
线程不能操作Timer控件?我在线程中写了Timer1.EnableTrue结果执行无错误,但就是没反应。看了一下Timer并没

线程不能操作Timer控件?
我在线程中写了Timer1.Enable=True
结果执行无错误,但就是没反应。
看了一下Timer并没有Invoke,应该是不需要托管的吧。
那要怎么做呢?

[解决办法]
如果只是需要实现该方法,可以设置一个全局布尔变量,然后线程改变它的属性。由定时器自身判断状态,终止定时器自己。
否则要保证线程安全,是比较麻烦的事情

===================================================
技术交流不该有界限 资源共享不该有条件
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明: <我的帖子我做主,结贴率保持100%>
1、欢迎一切问题有关的交流——无论答案对错;
2、不欢迎 顶、Mark、支持之类口水混分的人;
我保留对非 <散分贴> 蹭分者的厌恶和鄙视...
精通:jīnɡtōnɡ对学问技术等透彻的了解并熟练掌握
所以,我没有精通,只有JZ
===================================================
[解决办法]
子线程是不能操作父线程里面的timer的
[解决办法]
线程里可以控制timer啊,试看下面我的代码:

Public Class Form1

Dim WithEvents tmr As System.Timers.Timer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tmr = New System.Timers.Timer(500)
tmr.Start()
End Sub

Private Sub tmr_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tmr.Elapsed
Debug.WriteLine(Now.ToString)
End Sub

Private Sub StopTmr()
tmr.Stop()
MsgBox( "Stop ")
End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim thread As New Threading.Thread(AddressOf StopTmr)
thread.Start()
End Sub
End Class

热点排行