Многопоточное консольное приложение в VB.NET: методы и примеры

Вот несколько методов, которые можно использовать для создания многопоточного консольного приложения в VB.NET:

  1. Использование класса Thread. Вы можете создать несколько экземпляров класса Thread и одновременно выполнять различные задачи. Это можно сделать, определив Sub или лямбда-выражение и передав его конструктору потока.

Пример:

Imports System.Threading
Module Module1
    Sub Main()
        Dim thread1 As New Thread(Sub()
                                      ' Code for Thread 1
                                  End Sub)
        Dim thread2 As New Thread(Sub()
                                      ' Code for Thread 2
                                  End Sub)
        ' Start the threads
        thread1.Start()
        thread2.Start()
        ' Wait for the threads to finish
        thread1.Join()
        thread2.Join()
    End Sub
End Module
  1. Использование класса ThreadPool. Класс ThreadPool предоставляет пул рабочих потоков, которые можно использовать для асинхронного выполнения задач. Вы можете использовать метод QueueUserWorkItem для постановки задач в очередь на выполнение.

Пример:

Imports System.Threading
Module Module1
    Sub Main()
        ThreadPool.QueueUserWorkItem(Sub(state)
                                          ' Code for Task 1
                                      End Sub)
        ThreadPool.QueueUserWorkItem(Sub(state)
                                          ' Code for Task 2
                                      End Sub)
        ' Wait for the tasks to complete
        Thread.Sleep(5000)
    End Sub
End Module
  1. Использование библиотеки параллельных задач (TPL): TPL обеспечивает абстракцию более высокого уровня для работы с задачами и параллелизмом. Вы можете использовать метод Task.Run для асинхронного выполнения задач.

Пример:

Imports System.Threading.Tasks
Module Module1
    Sub Main()
        Dim task1 As Task = Task.Run(Sub()
                                          ' Code for Task 1
                                      End Sub)
        Dim task2 As Task = Task.Run(Sub()
                                          ' Code for Task 2
                                      End Sub)
        ' Wait for the tasks to complete
        Task.WaitAll(task1, task2)
    End Sub
End Module