文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 216
阅读 3
收藏 0
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");
        }
    }
}


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/44591753

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
C# 使用多线程如何传递两个以上参数的实现方法(附示例)

某些情况下当我们启动一个线程的时候会向该线程传递参数,有时除了功能上需要之外,我觉得还有就是为了我们能管理好启动的线程组(当然,只开一两个线程什么的也谈不上不好管理了,我说的线程...

余二五
2017/11/15
0
0
C#多线程学习(四) 多线程的自动管理(线程池)

本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习(五) 多线...

Yamazaki
2012/03/29
0
0
C#多线程编程系列(四)- 使用线程池

目录 1.1 简介 1.2 在线程池中调用委托 1.3 向线程池中放入异步操作 1.4 线程池与并行度 1.5 实现一个取消选项 1.6 在线程池中使用等待事件处理器及超时 1.7 使用计时器 1.8 使用BackgroundW...

InCerry
2018/08/06
0
0
Unity2018新功能抢鲜 | C# Job System Ⅰ

本文首发于“洪流学堂”微信公众号。 洪流学堂,让你学Unity快人几步 Unity2018.1中的新功能Job System,可以让你在Unity中编写简单且线程安全的多线程代码以大幅提高游戏性能。先来看看吧!...

zhenghongzhi6
2018/04/17
0
0
C# 中的Async 和 Await 的用法详解

众所周知C#提供Async和Await关键字来实现异步编程。在本文中,我们将共同探讨并介绍什么是Async 和 Await,以及如何在C#中使用Async 和 Await。 同样本文的内容也大多是翻译的,只不过加上了...

依乐祝
03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
31分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部