C#多线程的4中方式

Thread

cs 复制代码
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

cs 复制代码
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

cs 复制代码
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

cs 复制代码
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;  
        }  
    }  
}
相关推荐
CodeCraft Studio2 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一3 小时前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
lingchen19065 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152875 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go5 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠5 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
翻滚丷大头鱼6 小时前
Java 集合Collection—List
java·开发语言
aramae6 小时前
C++ -- 模板
开发语言·c++·笔记·其他
胡耀超6 小时前
4、Python面向对象编程与模块化设计
开发语言·python·ai·大模型·conda·anaconda
索迪迈科技7 小时前
java后端工程师进修ing(研一版 || day40)
java·开发语言·学习·算法