c# 多线程传递参数以及任务

2016/12/29 15:38
阅读数 262
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");
        }
    }
}


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部