IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> C# 高级特性(十):多线程 -> 正文阅读

[开发工具]C# 高级特性(十):多线程

用 Thread实现多线程:

        // 1 不带传入参数的
        public void ThreadFun()
        {
            // 处理后台,例如等待网络响应或耗时长的计算任务
            Console.WriteLine("Thrad:start do something");
            Thread.Sleep(2000);
            Console.WriteLine("Thrad:end ");
        }

        public void MainFun()
        {
            Thread thread = new Thread(ThreadFun);
            thread.Start();
            // 这时主线程还可以做其它事,例如响应用户的取消操作
            Console.WriteLine("Main:Need to wait");
        }

        // 2 使用带参数的
        private void ThreadFun2(object o)
        {
            string name = o as string;  //类型转换
            Console.WriteLine(name + ":Thrad:start do something");
            Thread.Sleep(2000);
            Console.WriteLine(name + ":Thrad:end ");
        }
        public void MainFun2()
        {
            Thread thread = new Thread(ThreadFun2);
            thread.Start("Mark");
            // 这时主线程还可以做其它事,例如响应用户的取消操作
            Console.WriteLine("Main:Need to wait");
        }

        // 3 使用匿名方法
        public void MainFun3()
        {
            Thread thread = new Thread(() => {
                Console.WriteLine("Thrad:start do something");
                Thread.Sleep(2000);
                Console.WriteLine("Thrad:end ");
            });
            thread.Start();
            // 这时主线程还可以做其它事,例如响应用户的取消操作
            Console.WriteLine("Main:Need to wait");
        }

使用Task 实现多线程

// 4 Task 
        public void MainFun4()
        {
            // 1) 
            string name = "Mark";
            Task task = new Task(() => {
                Console.WriteLine(name + " Task:start do something");
                Thread.Sleep(2000);
                Console.WriteLine(name + " Task:end ");
            });
            task.Start();

            // 2)
            Task.Run(() =>
            {
                Console.WriteLine(name + " Task:start do something");
                Thread.Sleep(2000);
                Console.WriteLine(name + " Task:end ");
            });
            // 这时主线程还可以做其它事,例如响应用户的取消操作
            Console.WriteLine("Main:Need to wait");
        }

        // 5 Task
        public void MainFun5()
        {
            Task[] taskList = new Task[2];

            string name = "Mark";
            taskList[0] = Task.Run(() => {
                Console.WriteLine(name+ " Task:start do something");
                Thread.Sleep(2000);
                Console.WriteLine(name + " Task:end ");
            });

            taskList[1] = Task.Run(() => {
                Console.WriteLine(name + " Task:start do something");
                Thread.Sleep(5000);
                Console.WriteLine(name + " Task:end ");
            });

            //  等待多个子线程完成后再继续:
            Task.WaitAll(taskList);
        }

        //async/await的实现:
        public  void MainFun6()
        {
            var ret1 = AsyncGetsum();
            Console.WriteLine("主线程执行其他处理");
            for (int i = 1; i <= 3; i++)
                Console.WriteLine("Call Main()");
            int result = ret1.Result;                  //阻塞主线程
            Console.WriteLine("任务执行结果:{0}", result);
        }

        async Task<int> AsyncGetsum()
        {
            await Task.Delay(1);
            int sum = 0;
            Console.WriteLine("使用Task执行异步操作.");
            for (int i = 0; i < 100; i++)
            {
                sum += i;
            }
            return sum;
        }

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:49:24  更:2021-11-30 15:49:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:23:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码