• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#多线程的应用全面解析

c#多线程的应用全面解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#多线程,c#多线程编程实例,c#多线程编程,c#多线程同步,c#多线程实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1.使用多线程的几种方式

(1)不需要传递参数,也不需要返回参数

ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值。

    {

        static void Main(string[] args)

        {

            for (int i = 0; i < 30; i++)

            {

                ThreadStart threadStart = new ThreadStart(Calculate);

                Thread thread = new Thread(threadStart);

                thread.Start();

            }

            Thread.Sleep(2000);

            Console.Read();

        }

        public static void Calculate()

        {

            DateTime time = DateTime.Now;//得到当前时间

            Random ra = new Random();//随机数对象

            Thread.Sleep(ra.Next(10,100));//随机休眠一段时间

            Console.WriteLine(time.Minute + ":" + time.Millisecond);

        }

}
</div>
(2)需要传递单个参数

    class Program

    {

        static void Main(string[] args)

        {

            for (int i = 0; i < 30; i++)

            {

                ParameterizedThreadStart tStart = new ParameterizedThreadStart(Calculate);

                Thread thread = new Thread(tStart);

                thread.Start(i*10+10);//传递参数

            }

            Thread.Sleep(2000);

            Console.Read();

        }

        public static void Calculate(object arg)

        {

            Random ra = new Random();//随机数对象

            Thread.Sleep(ra.Next(10, 100));//随机休眠一段时间

            Console.WriteLine(arg);

        }

}
</div>
(3)使用专门的线程类(常用)

使用线程类可以有多个参数与多个返回值,十分灵活!

    {

        static void Main(string[] args)

        {

            MyThread mt = new MyThread(100);

            ThreadStart threadStart = new ThreadStart(mt.Calculate);

            Thread thread = new Thread(threadStart);

            thread.Start();

   //等待线程结束

            while (thread.ThreadState != ThreadState.Stopped)

            {

                Thread.Sleep(10);

            }

            Console.WriteLine(mt.Result);//打印返回值

            Console.Read();

        }

    }

    public class MyThread//线程类

    {

        public int Parame { set; get; }//参数

        public int Result { set; get; }//返回值

        //构造函数

        public MyThread(int parame)

        {

            this.Parame = parame;

        }

        //线程执行方法

        public void Calculate()

        {

            Random ra = new Random();//随机数对象

            Thread.Sleep(ra.Next(10, 100));//随机休眠一段时间

            Console.WriteLine(this.Parame);

            this.Result = this.Parame * ra.Next(10, 100);

        }

}
</div>
(4)使用匿名方法(常用)

使用匿名方法启动线程可以有多个参数和返回值,而且使用非常方便!

    {

        static void Main(string[] args)

        {

   &nbs

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#多线程编程详解
  • C#制作多线程处理强化版网络爬虫
  • C#向线程中传递多个参数的解决方法(两种)
  • C#往线程里传递参数的方法小结
  • C#中实现线程同步lock关键字的用法详解
  • C#下载歌词文件的同步和异步方法
  • C#多线程传递参数及任务用法示例
  • C#模式画刷HatchBrush用法实例
  • C#纹理画刷TextureBrush用法实例
  • c#实现多线程局域网聊天系统

相关文章

  • 2017-05-28C# datatable 不能通过已删除的行访问该行的信息处理方法
  • 2017-05-28c#编写webservice服务引用实例分享
  • 2017-05-28基于C#实现简单的随机抽奖小程序
  • 2017-05-28AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法
  • 2017-05-28c# yield提高代码性能和可读性
  • 2017-05-28C#给picturebox控件加图片选中状态的2个方法
  • 2017-05-28C#重写DataGridView
  • 2017-05-28用C#在本地创建一个Windows帐户(DOS命令)
  • 2017-05-28基于Silverlight打印的使用详解,是否为微软的Bug问题
  • 2017-05-28c#定时运行程序分享(定时程序)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • WinForm天猫双11自动抢红包源码分享
    • C#画图之饼图折线图的实现方法
    • C#实现将字符串转换成日期格式的方法
    • C#编程中枚举类型的使用教程
    • C#编写的windows计算器的实例代码
    • 理解C#中的枚举(简明易懂)
    • C#实现给定字符串生成MD5哈希的方法
    • C#实现rabbitmq 延迟队列功能实例代码
    • c#实现网页图片提取工具代码分享
    • C#数组的常用操作方法小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有