C#多线程的4中方式

ops/2024/10/20 9:07:29/

Thread

class Program  
{  static void Main()  {  Thread thread = new Thread(new ThreadStart(DoWork));  thread.Start();  thread.Join(); // 等待线程完成  Console.WriteLine("主线程结束。");  }  static void DoWork()  {  Console.WriteLine("线程开始工作。");  Thread.Sleep(1000); // 模拟工作  Console.WriteLine("线程工作完成。");  }  
}

ThreadPool

class Program  
{  static void Main()  {  ThreadPool.QueueUserWorkItem(DoWork);  ThreadPool.QueueUserWorkItem(state => DoWorkWithState((string)state), "参数");  // 防止主线程提前结束  Thread.Sleep(2000);  }  static void DoWork(object state)  {  Console.WriteLine("ThreadPool 工作项开始工作。");  Thread.Sleep(1000); // 模拟工作  Console.WriteLine("ThreadPool 工作项完成。");  }  static void DoWorkWithState(string state)  {  Console.WriteLine($"ThreadPool 带参数的工作项开始工作,参数:{state}");  Thread.Sleep(1000); // 模拟工作  Console.WriteLine($"ThreadPool 带参数的工作项完成。");  }  
}

Task

class Program  
{  static async Task Main()  {  Task task = Task.Run(() => DoWork());  await task; // 等待任务完成  Console.WriteLine("主线程结束。");  }  static void DoWork()  {  Console.WriteLine("Task 开始工作。");  Task.Delay(1000).Wait(); // 模拟异步工作  Console.WriteLine("Task 工作完成。");  }  
}

async/await

class Program  
{  static async Task Main()  {  string url = "https://www.example.com";  string content = await FetchContentAsync(url);  Console.WriteLine(content);  }  static async Task<string> FetchContentAsync(string url)  {  using (HttpClient client = new HttpClient())  {  HttpResponseMessage response = await client.GetAsync(url);  response.EnsureSuccessStatusCode();  string responseBody = await response.Content.ReadAsStringAsync();  return responseBody;  }  }  
}


http://www.ppmy.cn/ops/126938.html

相关文章

AI工具 | Notion全新AI集成:搜索、内容生成、数据分析与智能聊天功能发布

新的 Notion AI 集成了搜索、生成内容、分析数据和智能聊天等功能&#xff0c;所有操作都可以在 Notion 内完成。依托于 GPT-4 和 Claude 等先进的 AI 模型&#xff0c;用户可以与 AI 聊天并获取针对各种话题的答案。 随时使用 在 Notion 页面右下角找到 AI 图标&#xff0c;点…

赏金猎人 | 挖掘TP-Link 服务中的信息泄露漏洞

前言 作为一名专注于安全研究的人员&#xff0c;我经常利用空闲时间探索漏洞奖励计划的世界。尽管传统平台提供了不少有价值的机会&#xff0c;我也会将调查扩展到一些知名厂商的公开系统上。 最近&#xff0c;我在一个 TP-Link 的子域上发现了一个重大安全问题&#xff0c;该…

【C语言】原码 反码 补码

为什么要有原码 反码 补码的概念&#xff1f; 因为在计算机中最终只能识别机器码&#xff0c;是以 0000 0000 二进制作为表示形式&#xff0c;对于一个数&#xff0c;计算机要使用一定的编码方式进行存储&#xff0c;原码 反码 补码是机器存储一个数值的编码方式&#xff0c;最…

外部服务器如何访问专用网络的本地IP

在专用网络&#xff08;如公司内网、专用局域网等&#xff09;中的 IP 地址&#xff0c;也属于本地 IP 地址。这些地址仅在专用网络内部使用&#xff0c;不能直接从互联网访问。本地 IP 地址的范围通常包括以下几类私有地址段&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0…

RabbitMQ 发布确认模式

RabbitMQ 发布确认模式 一、原理 RabbitMQ 的发布确认模式&#xff08;Publisher Confirms&#xff09;是一种机制&#xff0c;用于确保消息在被 RabbitMQ 服务器成功接收后&#xff0c;发布者能够获得确认。这一机制在高可用性和可靠性场景下尤为重要&#xff0c;能够有效防止…

南昌近视手术医生排名更新,速速围观!

在南昌&#xff0c;哪些医生做近视手术好呢&#xff1f;小编已经为大家整理出来啦&#xff01;下文的这些医生均是小编根据多年的从业经验、口碑评价&#xff0c;筛选和整理出来的TOP级医生们&#xff01;南昌近视手术医生排名已更新&#xff0c;赶紧来看看都有谁吧&#xff01…

Python项目Docker服务器部署

Python项目Docker服务器部署 Python项目Docker服务器部署准备工作部署其他问题 Python项目Docker服务器部署 准备工作 1.准备基础镜像 # 指定拉取arm架构镜像 docker pull --platform linux/arm64 python:3.11 # 指定拉取amd架构镜像 docker pull --platform linux/amd64 py…

联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键

联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键 文章目录 联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键1. 进入BIOS快捷键2. 快速进入BIOS设置界面3. 快速进入启动项选择界面 1. 进入BIOS快捷键 进入BIOS设置界面的快捷键为F2快速进入启动项选择界面的快捷键为F12 2. 快速进…