本文实例讲述了C#多线程传递参数及任务用法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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#程序设计有所帮助。