好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#多线程传递参数及任务用法示例

本文实例讲述了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" );

     }

   }

}

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#多线程传递参数及任务用法示例的详细内容...

  阅读:40次