vb.net中的动态定时器
我正在开发.NET4中的一个vb应用程序。该应用程序启动动态线程以运行某些作业。每个线程运行一个特定的作业,并在该线程内执行内循环。它需要这样,我不能有线程,然后再开始 无论如何。。我在循环中使用threading.thread.sleep使循环暂停一段时间,然后再次运行。这似乎不是一个好办法,也不推荐。所以我想也许我可以使用一个动态计时器或其他东西让线程在再次运行之前等待30秒。我希望有人能给我一些指导和示例代码 谢谢 香农 ~~~~~~~~~~~~~编辑 嘿我解决了问题,没有。。这不是背景线程中的睡眠。。。。这是一个我没有意识到我在UI线程中加入的睡眠。。我开始注释掉所有内容,开始逐个添加,然后找到了它。对不起,PEBKAM错误vb.net中的动态定时器,vb.net,multithreading,timer,Vb.net,Multithreading,Timer,我正在开发.NET4中的一个vb应用程序。该应用程序启动动态线程以运行某些作业。每个线程运行一个特定的作业,并在该线程内执行内循环。它需要这样,我不能有线程,然后再开始 无论如何。。我在循环中使用threading.thread.sleep使循环暂停一段时间,然后再次运行。这似乎不是一个好办法,也不推荐。所以我想也许我可以使用一个动态计时器或其他东西让线程在再次运行之前等待30秒。我希望有人能给我一些指导和示例代码 谢谢 香农 ~~~~~~~~~~~~~编辑 嘿我解决了问题,没有。。这不是背景线
感谢您的输入使用以下类进行延迟,我使用相同的javascript概念开发了:settimeout:
Public Class JSsetTimeout
Public res As Object = Nothing
Dim WithEvents tm As Timer = Nothing
Dim _MethodName As String
Dim _args() As Object
Dim _ClassInstacne As Object = Nothing
Public Shared Sub SetTimeout(ByVal ClassInstacne As Object, ByVal obj As String, ByVal TimeSpan As Integer, ByVal ParamArray args() As Object)
Dim jssto As New JSsetTimeout(ClassInstacne, obj, TimeSpan, args)
End Sub
Public Sub New(ByVal ClassInstacne As Object, ByVal obj As String, ByVal TimeSpan As Integer, ByVal ParamArray args() As Object)
If obj IsNot Nothing Then
_MethodName = obj
_args = args
_ClassInstacne = ClassInstacne
tm = New Timer With {.Interval = TimeSpan, .Enabled = False}
AddHandler tm.Tick, AddressOf tm_Tick
tm.Start()
End If
End Sub
Private Sub tm_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tm.Tick
tm.Stop()
RemoveHandler tm.Tick, AddressOf tm_Tick
If Not String.IsNullOrEmpty(_MethodName) AndAlso _ClassInstacne IsNot Nothing Then
res = CallByName(_ClassInstacne, _MethodName, CallType.Method, _args)
Else
res = Nothing
End If
End Sub
End Class
用法
JSsetTimeout.SetTimeout(ClassContainingMethod, "MethodName", 30000, OptionalParameters)
你为什么得出这样的结论:睡眠不是一个好的方法?只要线程不是UI线程。睡眠很好:)嗯,我也是这么想的。。但是当我启动我的线程时,对于后台工作线程的一些睡眠状态。。UI线程是有响应的,但是在几个睡眠周期之后,UI开始变得非常不稳定,然后就没有响应。我读过几篇帖子,说这很可能就是线索。睡觉吧。。这就是为什么我要去那里path@sjums-团体中有一些噪音表明sleep()是一种反模式。有一些理由认为,sleep()循环经常被用作线程间通信的蹩脚形式(而且托管线程的成本也非常高,以至于在一个线程中睡觉与在一架闲置的喷气式飞机上睡觉是一种巨大的资源浪费。有点像.NET主题,不是吗:)。只是为了咧嘴一笑,然后进去注释掉了线程。在后台工作线程中睡觉,UI保持响应。。。我知道那不是一个很好的测试。。但这会让我相信睡眠让我problems@jvcoach23-“这可能是线索。睡眠”-不,不是,(无论如何,它本身不是)。