控制台在线程完成之前退出(多线程)

时间:2012-12-02 13:39:04

标签: .net vb.net multithreading .net-3.5 threadpool

我有一个控制台应用程序,我使用线程池,但我的应用程序在线程池执行其作业之前退出。我读到我可以使用Console.ReadLine()但我想在线程池完成其工作后立即退出。我在c#中找到了一些例子,但我想要一些关于vb.net的东西,我也使用.net 3.5,所以我不能使用任务并行库。我目前的代码是:

For i As Integer = 0 To addresses.Length - 1
    Dim mydata_obj = New With {Key .address = addresses(i), .subject = messages.subject, .body = messages.body}
    ThreadPool.QueueUserWorkItem(AddressOf doSomething, mydata_obj)
Next

1 个答案:

答案 0 :(得分:2)

使用WaitHandle.WaitAll等待任务完成

了解更多信息WaitHandle.WaitAll

替代方案是使用threadpool

使用线程池也可以实现等待对象。在某些情况下,这更好,因为这意味着您不需要专用线程来等待对象。

ThreadPool类提供一个线程池,可用于执行任务,发布工作项,处理异步I / O,代表其他线程等待,以及处理计时器。

相关问题