vb.net - 如何让一个线程等到另一个线程完成?

标签 vb.net multithreading

Static lock As Object

SyncLock lock
    TraverSingweb.TraverSingWeb.WebInvoke(Sub() TraverSingweb.TraverSingWeb.putHtmlIntoWebBrowser(theenchancedwinclient)) 'This quick function need to finish before we continue
End SyncLock

SyncLock lock
    'SuperGlobal.lockMeFirst(AddressOf SuperGlobal.doNothing) ' donothing
End SyncLock

这就是我目前在vb.net中所做的事情。这是一种模式吗?

最佳答案

这是一个非常基本的例子; main方法只是创建两个线程并启动它们。第一个线程等待10秒,然后设置 _WaitHandle_FirstThreadDone 。第二个线程只是在继续之前等待 _WaitHandle_FirstThreadDone 的设置。这两个线程是同时启动的,但是第二个线程将等待第一个线程设置 _WaitHandle_FirstThreadDone ,然后再继续。

有关更多详细信息,请参见:System.Threading.AutoResetEvent

Module Module1

    Private _WaitHandle_FirstThreadDone As New System.Threading.AutoResetEvent(False)

    Sub Main()
        Console.WriteLine("Main Started")
        Dim t1 As New Threading.Thread(AddressOf Thread1)
        Dim t2 As New Threading.Thread(AddressOf thread2)
        t1.Start()
        t2.Start()
        Console.WriteLine("Main Stopped")
        Console.ReadKey()
    End Sub

    Private Sub Thread1()
        Console.WriteLine("Thread1 Started")
        Threading.Thread.Sleep(10000)
        _WaitHandle_FirstThreadDone.Set()
        Console.WriteLine("Thread1 Stopped")
    End Sub

    Private Sub thread2()
        Console.WriteLine("Thread2 Started")
        _WaitHandle_FirstThreadDone.WaitOne()
        Console.WriteLine("Thread2 Stopped")
    End Sub
End Module

关于vb.net - 如何让一个线程等到另一个线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394315/

相关文章:

asp.net - 在 HTML 表中显示 SqlDataSource 数据(DataTables 插件)

c# - 如何打印.aspx页面的一部分?

mysql - ASP.NET MVC 4,一个 View 中的多个模型?

c++ - 如何限制第 3 方流程必须完成的时间?

multithreading - 类似于线程安全映射的对仅在一个线程上存在的值的访问

multithreading - 如果非守护线程正在等待守护进程之一?

vb.net - 始终处于领先地位的桌面 YouTube 播放器

c# - 在父窗体中居中 MessageBox

c# - 当其他线程正在使用字典时,在字典中合并修改的好方法是什么?

java - 死锁困惑