zoukankan      html  css  js  c++  java
  • c# 多线程传递参数以及任务

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("这是主线程");
                DateTime dtStart = DateTime.Now;
                for (int i = 0; i < 100; i++)
                {
                    Student s = new Student();
                    s.name = "张三" + i;
                    s.sex = "男";
                    s.age = 28;
    
                    Thread t = new Thread(ThreadWithParas);
                    t.Start(s); //要给线程传递数据,需某个存储数据的类或结构
                }
                DateTime dtEnd = DateTime.Now;
                TimeSpan span = (TimeSpan)(dtEnd - dtStart);
    
                Console.ReadLine();
                Console.WriteLine("运行的时间  " + span.Milliseconds);
                Console.ReadLine();
            }
    
            static void ThreadWithParas(object o)
            {
                Student s = o as Student;
                Console.WriteLine("这是分线程" + Thread.CurrentThread.ManagedThreadId + "  " + s.name + "---" + s.sex + "---" + s.age);
            }
        }
    
        public class Student
        {
            public string name;
            public string sex;
            public int age;
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                //任务层次结构
                Task parent = new Task(ParentTask);
                parent.Start();
                Thread.Sleep(2000);
                Console.WriteLine(parent.Status);
                Thread.Sleep(4000);
                Console.WriteLine(parent.Status);
                Console.ReadLine();
            }
    
            //父任务
            static void ParentTask()
            {
                Console.WriteLine("task id {0}", Task.CurrentId);
                Task child = new Task(ChildTask); // , TaskCreationOptions.DetachedFromParent);
                child.Start();
                Thread.Sleep(1000);
                Console.WriteLine("parent started child");
                // Thread.Sleep(3000);
            }
    
            //子任务
            static void ChildTask()
            {
                Console.WriteLine("child");
                Thread.Sleep(5000);
                Console.WriteLine("child finished");
            }
        }
    }
    


  • 相关阅读:
    每日总结32
    每日总结31
    每日总结30
    Leetcode 115. 不同的子序列(二维DP)
    Leetcode 59. 螺旋矩阵 II
    Leetcode 227. 基本计算器 II
    macOS下将GitHub中单个子文件夹下载到本地
    P3796 【模板】AC自动机(加强版)
    P3808 【模板】AC自动机(简单版)
    【Kubernetes】副本的删除
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234130.html
Copyright © 2011-2022 走看看