C#多线程传递参数及任务用法示例
本文实例讲述了C#多线程传递参数及任务用法。分享给大家供大家参考,具体如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; namespaceConsoleSample { classProgram { staticvoidMain(string[]args) { Console.WriteLine("这是主线程"); DateTimedtStart=DateTime.Now; for(inti=0;i<100;i++) { Students=newStudent(); s.name="张三"+i; s.sex="男"; s.age=28; Threadt=newThread(ThreadWithParas); t.Start(s);//要给线程传递数据,需某个存储数据的类或结构 } DateTimedtEnd=DateTime.Now; TimeSpanspan=(TimeSpan)(dtEnd-dtStart); Console.ReadLine(); Console.WriteLine("运行的时间"+span.Milliseconds); Console.ReadLine(); } staticvoidThreadWithParas(objecto) { Students=oasStudent; Console.WriteLine("这是分线程"+Thread.CurrentThread.ManagedThreadId+""+s.name+"---"+s.sex+"---"+s.age); } } publicclassStudent { publicstringname; publicstringsex; publicintage; } }
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; usingSystem.Threading.Tasks; namespaceConsoleSample { classProgram { staticvoidMain(string[]args) { //任务层次结构 Taskparent=newTask(ParentTask); parent.Start(); Thread.Sleep(2000); Console.WriteLine(parent.Status); Thread.Sleep(4000); Console.WriteLine(parent.Status); Console.ReadLine(); } //父任务 staticvoidParentTask() { Console.WriteLine("taskid{0}",Task.CurrentId); Taskchild=newTask(ChildTask);//,TaskCreationOptions.DetachedFromParent); child.Start(); Thread.Sleep(1000); Console.WriteLine("parentstartedchild"); //Thread.Sleep(3000); } //子任务 staticvoidChildTask() { Console.WriteLine("child"); Thread.Sleep(5000); Console.WriteLine("childfinished"); } } }
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。