亚搏下载体育官网

  • 在C 中,如何创建并启动⼀个新的线程?请举例说明

新闻动态

你的位置:亚搏下载体育官网 > 新闻动态 >

在C 中,如何创建并启动⼀个新的线程?请举例说明

发布日期:2025-02-04 22:57    点击次数:54

在 C# 中,可以使用System.Threading.Thread类创建并启动一个新的线程。以下是创建和启动线程的方式以及示例代码:

创建并启动线程的步骤

创建线程对象

创建一个Thread对象,并指定线程运行的方法(委托)。

启动线程使用Thread.Start()方法启动线程。线程方法线程执行的方法必须是无参数方法,或者使用ParameterizedThreadStart传递参数。

示例 1:创建无参数线程

using System;using System.Threading;class Program{ static void Main() { // 创建线程,指定线程运行的方法 Thread thread = new Thread(PrintNumbers); // 启动线程 thread.Start(); // 主线程继续运行 Console.WriteLine("Main thread is running..."); } // 线程运行的方法 static void PrintNumbers() { for (int i = 1; i <= 5; i++) { Console.WriteLine($"Thread: {i}"); Thread.Sleep(500); // 模拟任务执行,暂停 500 毫秒 } }}

输出示例:

Main thread is running...Thread: 1Thread: 2Thread: 3Thread: 4Thread: 5

示例 2:创建带参数的线程

使用ParameterizedThreadStart或 Lambda 表达式为线程传递参数。

方法一:ParameterizedThreadStart

using System;using System.Threading;class Program{ static void Main() { // 创建线程,使用 ParameterizedThreadStart 传递参数 Thread thread = new Thread(PrintMessage); thread.Start("Hello from the thread!"); Console.WriteLine("Main thread is running..."); } // 接收参数的线程方法 static void PrintMessage(object message) { Console.WriteLine($"Thread message: {message}"); }}

方法二:Lambda 表达式

using System;using System.Threading;class Program{ static void Main() { // 使用 Lambda 表达式创建线程 Thread thread = new Thread(() => { Console.WriteLine("Hello from the thread!"); }); thread.Start(); Console.WriteLine("Main thread is running..."); }}

示例 3:使用线程控制(Join 和 IsAlive)

Join

Thread.Join()等待线程执行完成。

using System;using System.Threading;class Program{ static void Main() { Thread thread = new Thread(PrintNumbers); thread.Start(); Console.WriteLine("Waiting for the thread to complete..."); thread.Join(); // 等待线程执行完成 Console.WriteLine("Thread completed."); } static void PrintNumbers() { for (int i = 1; i <= 3; i++) { Console.WriteLine($"Thread: {i}"); Thread.Sleep(500); } }}

IsAlive

检查线程是否仍在运行。

using System;using System.Threading;class Program{ static void Main() { Thread thread = new Thread(PrintNumbers); thread.Start(); while (thread.IsAlive) { Console.WriteLine("Thread is still running..."); Thread.Sleep(200); } Console.WriteLine("Thread has finished."); } static void PrintNumbers() { Thread.Sleep(1000); Console.WriteLine("Thread task completed."); }}

注意事项

线程生命周期

使用Thread.Join()可以等待线程完成。检查Thread.IsAlive可以判断线程是否正在运行。

线程安全多线程访问共享资源时,需使用同步机制(如lock)避免数据竞争。后台线程设置Thread.IsBackground = true将线程标记为后台线程,主线程退出时后台线程会自动终止。推荐使用Task在现代 C# 开发中,推荐使用Task或异步编程模型(async/await),它们提供了更高级的并发编程方式。

总结

通过System.Threading.Thread类,您可以轻松地创建和启动线程,并对其进行控制。然而,在大多数情况下,使用Task或线程池更适合现代应用程序的需求,因为它们提供了更高的抽象和更好的资源管理。



相关资讯Related Articles

  • 宏盛股份(603090.SH):和宏智通过其另一股东和信向广达供

    2025-10-11

    (原标题:宏盛股份(603090.SH):和宏智通过其另一股东和信向广达供应液冷散热器) 格隆汇9月29日丨宏盛股份(603090.SH)在互动平台表示,公司不是广达、台达的供应商。公司持股49%的合资公司无锡和宏智散热科技有限公司(和宏智)通过其另一股东苏州和信精密科技股份有限公司(和信)向广达供应液冷散热器,和宏智目前业务规模不大,正借助和信的客户渠道积极拓展更多的产品应用客户。...

  • 别穿运动鞋了,捂脚又烂大街了!今年流行“布洛克鞋”,时髦显高_牛

    2025-08-19

    如果要为运动鞋和布洛克鞋投票,谁更能适合大家的日常穿搭。 一定最后的结果就是都是小白鞋的,运动鞋作为一双运动鞋,其实本身是没有那么多“时尚”感,但是运动鞋却凭借着百搭的魅力和舒适的特点,在街上都能看到的爆款。 毕竟出门就一双鞋,以运动鞋的舒适度,搭配大部分衣服都不会有太大的违和感。 但是最近我发现布洛克鞋也越来越流行了,其实布洛克鞋原本是上一代人的风格,现在怎么就突然又“回潮”了呢? 布洛克鞋在男...

  • 中国刚收俄方登岛请帖,日本立刻开火66发实弹!北方四岛毫发未伤,

    2025-07-06

    我是赵俊斌,拆穿虚妄的喉舌,写给还在忍气吞声的人。 哪怕他们拿着话筒叫嚣,我也会把真实摆上桌子。 普京刚请中国登岛,日本就在北方四岛开火,66发实弹打不疼俄罗斯,只暴露一个字:慌! 我是赵俊斌,拆穿虚妄的喉舌,写给还在忍气吞声的人。 5月23日上午,日本北海道一艘巡逻艇,在北方四岛之一的库纳施尔岛近海,突然开火。 没预警、没申报、没理由,直接对着海面打了66发实弹,一打就是53分钟。 而就在两天前...

  • 深圳全链条强化商业秘密保护,为市场主体创新发展保驾护航

    2025-06-27

    商业秘密是重要的知识产权,是企业保持市场竞争优势的关键要素。深圳市市场监督管理局深入推进商业秘密保护创新试点工作,全方位构建商业秘密保护服务体系,与广东省市场监督管理局合力共建全省首个黄金内湾涉外商业秘密保护基地,发布一系列地方标准指引文件,建立商业秘密保护标准规范,探索商业秘密多元保护手段,指导专精特新企业健全商业秘密管理体系,积极探索务实、高效、管用的商业秘密保护服务机制。 近年来,随着国内国...