Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的动态定时器_Vb.net_Multithreading_Timer - Fatal编程技术网

vb.net中的动态定时器

vb.net中的动态定时器,vb.net,multithreading,timer,Vb.net,Multithreading,Timer,我正在开发.NET4中的一个vb应用程序。该应用程序启动动态线程以运行某些作业。每个线程运行一个特定的作业,并在该线程内执行内循环。它需要这样,我不能有线程,然后再开始 无论如何。。我在循环中使用threading.thread.sleep使循环暂停一段时间,然后再次运行。这似乎不是一个好办法,也不推荐。所以我想也许我可以使用一个动态计时器或其他东西让线程在再次运行之前等待30秒。我希望有人能给我一些指导和示例代码 谢谢 香农 ~~~~~~~~~~~~~编辑 嘿我解决了问题,没有。。这不是背景线

我正在开发.NET4中的一个vb应用程序。该应用程序启动动态线程以运行某些作业。每个线程运行一个特定的作业,并在该线程内执行内循环。它需要这样,我不能有线程,然后再开始

无论如何。。我在循环中使用threading.thread.sleep使循环暂停一段时间,然后再次运行。这似乎不是一个好办法,也不推荐。所以我想也许我可以使用一个动态计时器或其他东西让线程在再次运行之前等待30秒。我希望有人能给我一些指导和示例代码

谢谢 香农

~~~~~~~~~~~~~编辑 嘿我解决了问题,没有。。这不是背景线程中的睡眠。。。。这是一个我没有意识到我在UI线程中加入的睡眠。。我开始注释掉所有内容,开始逐个添加,然后找到了它。对不起,PEBKAM错误


感谢您的输入

使用以下类进行延迟,我使用相同的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-“这可能是线索。睡眠”-不,不是,(无论如何,它本身不是)。