A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩温华 中级黑马   /  2012-11-22 22:16  /  1490 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程有几种方法,分别是什么,举例说明

5 个回复

倒序浏览
1、先看例子吧
        程序一:
          public sealed class Program
          {
                public static void Main()
                {
                       //创建线程对象,传入要线程执行的方法                      Thread threadFirst = new Thread(CountTime);
                       //将线程设置为后台线程(当所有前台线程结束后,后台线程也会自动退出)
                       threadFirst.IsBackground = true;
                        //启动线程,执行方法
                       threadFirst.Start();
                }

                public void CountTime()               {
                    for (int i = 0; i <100; i++)
                   {
                          Console.WriteLine(i);
                   }

               }
          }

      程序二、
          public sealed class Program
          {
                public static void Main()
                {
                       //创建线程对象,传入要线程执行的方法                      Thread threadFirst = new Thread(CountTime);
                       //将线程设置为后台线程(当所有前台线程结束后,后台线程也会自动退出)
                       threadFirst.IsBackground = true;
                        //启动线程,执行方法
                       threadFirst.Start(max);
                }

                public void CountTime(int max)               {
                    for (int i = 0; i <max; i++)
                   {
                          Console.WriteLine(i);
                   }

               }
          }

2、总结:线程是通过委托来实现的,在创建Thread对象时,传递要执行的方法的方法名,Thread threadFirst = new Thread(CountTime)
                然后通过Start方法执行委托。如果所执行的方法带有参数,那么就在调用Start的方法时传递参数,如上述程序二 所示 ;
                如果不带参数,那么就在调用Start方法时不传参数,如上述程序一所示 ;如果要传递多个参数时,就将这多个参数放到一个集合中,
                再将这个集合传递给Start方法
a、不带参数:如上述程序一所示
b、带有参数:如上述程序二所示
回复 使用道具 举报
在C#中,多线程是使用System.Threading命名空间在程序中实现的。该命名空间提供多个类、枚举、委托和接口来支持多线程。
ThreadStart是System.Threading命名空间内的一个委托;
ThreadPriority和ThreadState是System.Threading命名空间内的枚举;
Thread是System.Threading命名空间内的一个类;
ThreadAbortException和ThreadStateException是System.Threading命名空间内的异常类。


例子:
using System;
using System.Threading;

namespace Example_1
{
  class  SchedulingDemo
   {
     [STAThread]
     static void Main()
      {
          Thread.CurrentThread.Name="主线程";
          Thread objThreadOne=new Thread(new ThreadStart(TaskOne);
          objThreadOne.Name=" 子线程1";
          Thread objThreadTwo=new Thread(new ThreadStart(TaskTwo);
          objThreadTwo.Name="子线程2";

          //将开始子线程
          objThreadOne.Strat();
          objThreadTwo.Start();
          objThreadTwo.priority=Threadpriority.Highest;



       }
      
       static void  TaskOne()
       {
          for(int  count=1;count<=5;count++)
           {
              Console.WriteLine(count*2);
           }
       }
      
      
      static void  TaskTwo()
       {
          for(int  index=5000;index>=4990;index--)        
           {
              Console.WriteLine(index);
           }
       }
      

   }
}



回复 使用道具 举报
陈辉 发表于 2012-11-22 23:15
1、先看例子吧
        程序一:
          public sealed class Program

嗯,讲得简单易懂,非常感谢
回复 使用道具 举报
韩温华 发表于 2012-11-23 12:40
嗯,讲得简单易懂,非常感谢

大家互相学习吗,呵呵
回复 使用道具 举报
韩温华 发表于 2012-11-23 12:40
嗯,讲得简单易懂,非常感谢

大家互相学习吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马