首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将参数传递给Thread中的ThreadStart方法?

将参数传递给Thread中的ThreadStart方法,可以通过以下几种方式实现:

  1. 使用匿名方法:
代码语言:csharp
复制
Thread thread = new Thread(delegate() {
    // 在这里编写需要在新线程中执行的代码
    Console.WriteLine("Hello from new thread!");
});
thread.Start();
  1. 使用lambda表达式:
代码语言:csharp
复制
Thread thread = new Thread(() => {
    // 在这里编写需要在新线程中执行的代码
    Console.WriteLine("Hello from new thread!");
});
thread.Start();
  1. 使用自定义类实现:
代码语言:csharp
复制
public class MyThreadClass {
    public void MyThreadMethod(string message) {
        // 在这里编写需要在新线程中执行的代码
        Console.WriteLine("Hello from new thread: " + message);
    }
}

MyThreadClass myThreadClass = new MyThreadClass();
Thread thread = new Thread(new ParameterizedThreadStart(myThreadClass.MyThreadMethod));
thread.Start("Hello World!");
  1. 使用异步方法:
代码语言:csharp
复制
public async Task MyAsyncMethod(string message) {
    // 在这里编写需要在新线程中执行的代码
    Console.WriteLine("Hello from new thread: " + message);
}

Thread thread = new Thread(async () => {
    await MyAsyncMethod("Hello World!");
});
thread.Start();

以上是四种常见的方法,可以根据实际需求选择合适的方式来实现将参数传递给Thread中的ThreadStart方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 线程基础必知必会(一)

    从这篇文章开始,我将利用两篇文章讲解线程的基础知识,本篇文章涉及到了 创建线程、线程等待、线程暂停、线程终止 和 线程状态检测 相关的内容。这篇文章及其下一篇文章是这个专题的基础中的基础,因此我会用简单易懂的语言和示例代码来讲解,以求您在阅读完文章后能为后续线程其他只是打下坚实的基础。学习这张篇文章你需要具备 C# 语言基础和 Microsoft Visual Studio 2015 及以上任何版本。 所谓的线程,就是操作系统利用某种方式将计算单元分割成大量的虚拟进程,然后赋予这些虚拟进程一定的计算能力。这里需要注意,因为创建和使用多线程是一个消耗大量操作系统资源的过程,因此当只有一个单核处理器时多线程会导致操作系统忙于管理这些线程,进而无法运行程序甚至有时操作系统本身也会无法正常运行(即使操作系统访问处理器的优先级最高,也依然会出现这种问题)。因此目前主流的处理器都是多核心处理器,并且计算能力也是相当的高,但是我们不能因为硬件提高了而忽略软件的发展,目前主流的开发语言都支持多线程处理。废话不多说现在我们开始线程基础的第一篇。

    01

    ManualResetEvent使用演示

    ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。 当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态。此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。 一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。 可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,如果初始状态处于终止状态,为 true;否则为 false。

    02

    c#之task与thread区别及其使用

    1.什么是thread 当我们提及多线程的时候会想到thread和threadpool,这都是异步操作,threadpool其实就是thread的集合,具有很多优势,不过在任务多的时候全局队列会存在竞争而消耗资源。thread默认为前台线程,主程序必须等线程跑完才会关闭,而threadpool相反。 总结:threadpool确实比thread性能优,但是两者都没有很好的api区控制,如果线程执行无响应就只能等待结束,从而诞生了task任务。 2.什么是task task简单地看就是任务,那和thread有什么区别呢?Task的背后的实现也是使用了线程池线程,但它的性能优于ThreadPoll,因为它使用的不是线程池的全局队列,而是使用的本地队列,使线程之间的资源竞争减少。同时Task提供了丰富的API来管理线程、控制。但是相对前面的两种耗内存,Task依赖于CPU对于多核的CPU性能远超前两者,单核的CPU三者的性能没什么差别。

    02
    领券