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#程序设计有所帮助。