VB.NET 多线程

17 Mar 2025 | 5 分钟阅读

什么是 VB.NET 线程?

当程序中同时执行两个或多个进程时,该过程称为多线程。 每个进程的执行被称为线程。 单个线程用于在应用程序中执行单个逻辑或任务。 默认情况下,每个应用程序都有一个或多个线程来执行每个进程,该线程被称为主线程

要在线程中创建和访问新线程,我们需要导入 System.Threading 命名空间。 当 VB.NET 中程序的执行开始时,会自动调用 Main 线程来处理程序逻辑。 如果我们创建另一个线程在 Thread 类中执行该过程,则新线程将成为线程的线程。

创建一个新线程

VB.NET中,我们可以通过扩展 Thread 类并传递 ThreadStart 委托作为 Thread 构造函数的参数来创建一个线程。 ThreadStart() 是由新线程执行的方法。 我们需要调用 Start() 方法来启动新线程的执行,因为它最初处于未启动状态。 PrintInfo 参数包含在创建新线程时执行的可执行语句

让我们编写一个程序来在 Thread 类中创建和访问线程。

create_Thread.vb

输出

VB.NET Multithreading

在上面的程序中,主线程和子线程同时开始执行。 主线程的执行在完成其功能后停止,但子线程将继续执行直到其任务完成。

VB.NET 线程方法

以下是 Thread 类中最常用的方法。

方法描述
Abort()顾名思义,它用于终止线程的执行。
AllocateDataSlot()它用于在所有线程上为未命名数据创建一个插槽。
AllocateNamedDatsSlot()它用于在所有线程上为已定义数据创建一个插槽。
Equals()它用于检查当前和定义的线程对象是否相等。
Interrupt()它用于中断处于 Wait、sleep 和 join 线程状态的线程。
Join()它是一种同步方法,它会停止调用线程,直到执行线程完成。
Resume()顾名思义,Resume() 方法用于恢复已暂停的线程。
Sleep()它用于将当前执行的线程挂起指定的时间。
Start()它用于启动线程的执行或更改正在进行的实例的状态。
Suspend()它用于停止当前正在执行的线程。

VB.NET 线程生命周期

在 VB.NET 多线程中,每个线程都有一个生命周期,该生命周期在使用 Thread 类创建新对象时开始。 一旦线程类定义的任务完成,线程的生命周期就会结束。

VB.NET 编程中线程周期有一些状态。

国家描述
未启动当我们创建一个新线程时,它最初处于未启动状态。
Runnable当我们调用 Start() 方法来准备线程运行时,会出现可运行的情况。
运行中 (Running)Running 状态表示当前线程正在运行。
不可运行它表示线程不处于可运行状态,这意味着线程处于 sleep() 或 wait() 或 suspend() 中,或者被 I/O 操作阻止。
已死 (Dead)如果线程处于死亡状态,则线程已完成其工作或已中止。

让我们创建一个程序,通过使用 Thread 类的各种方法来管理线程。

Thread_cycle.vb

输出

VB.NET Multithreading

在上面的示例中,我们使用了 Thread 类的不同方法,例如 Start() 方法来启动线程的执行,Join() 方法用于停止线程的执行,直到线程的执行完成。 Sleep() 方法用于暂停线程的执行 5 秒。

多线程

当在程序中执行两个或多个进程以同时执行多个任务时,该过程称为多线程

当我们执行应用程序时,将自动调用 Main 线程以同步执行编程逻辑,这意味着它会依次执行一个进程。 这样,第二个进程必须等到第一个进程完成,这需要时间。 为了克服这种情况,VB.NET 引入了一个新概念 Multithreading,通过在程序中创建多个线程来同时执行多个任务。

让我们编写一个多线程程序,以便在 VB.NET 应用程序中同时执行多个任务。

Multi_thread.vb

输出

VB.NET Multithreading

在上面的示例中,我们创建了两个线程(th, th2)来同时执行 PrintInfoPrintInfo2 方法。 当执行开始时,两个线程同时执行。 但是执行了 PrintInfo 方法的第一条语句,然后它会等待下一条语句,直到 PrintInfo2 方法在程序中完成。


下一个主题VB.NET 异常处理