本文實(shí)例講述了C#多線程傳遞參數(shù)及任務(wù)用法。分享給大家供大家參考,具體如下:
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); //要給線程傳遞數(shù)據(jù),需某個(gè)存儲(chǔ)數(shù)據(jù)的類或結(jié)構(gòu) } DateTime dtEnd = DateTime.Now; TimeSpan span = (TimeSpan)(dtEnd - dtStart); Console.ReadLine(); Console.WriteLine("運(yùn)行的時(shí)間 " + 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) { //任務(wù)層次結(jié)構(gòu) Task parent = new Task(ParentTask); parent.Start(); Thread.Sleep(2000); Console.WriteLine(parent.Status); Thread.Sleep(4000); Console.WriteLine(parent.Status); Console.ReadLine(); } //父任務(wù) 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); } //子任務(wù) static void ChildTask() { Console.WriteLine("child"); Thread.Sleep(5000); Console.WriteLine("child finished"); } }}新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注