代码改变世界

异步多线程案例

  Evan.Pei  阅读(31)  评论(0编辑  收藏  举报
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine($"Task 学习开始----{Thread.CurrentThread.ManagedThreadId}");
            List<Task> ta1 = new List<Task>();
            fun1(out ta1);//得到一个异步多线程集合
            TaskFactory tf = new TaskFactory();//现场工厂 管理线程
            //等集合中的线程执行完,在从线程池中拿一个线程执行新方法
            tf.ContinueWhenAll(ta1.ToArray(), t => {Console.WriteLine($"Task 学习结束----{Thread.CurrentThread.ManagedThreadId}"); });
        }
        public static void fun1(out List<Task> tlist)
        {
            List<Task> tasklist = new List<Task>();
            //lamdba表达式直接写方法体
            tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第1个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
            tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第2个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
            tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第3个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
            tasklist.Add(Task.Run(() =>
            {
                var result = fun2("hello!"); //调用有参数和返回值的方法
               Console.WriteLine(result.ToString());
            }));
            tlist = tasklist;//返回值
        }
        //有参数的方法
        public static string fun2(string a)
        {
           Console.WriteLine(a+"调用有参数返回值的方法!"+ Thread.CurrentThread.ManagedThreadId);
            return a;
        }
    }

  

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示