简单的多线程通信实例(用委托事件实现)
1
using System;
2
using System.Threading;
3![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
namespace ifan
5
{
6
//自定义委托声明
7
public delegate void childExitDelegate(object sender, ChildExitEventArgs e);
8![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
public class TDelegate
10
{
11
//自定义的事件,实际上就是上面那个委托类型的实例
12
public static event childExitDelegate onChildThreadExit;
13![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
private static void Main()
15
{
16
//订阅事件,就是说,当onChildThreadExit事件发生时调用onChildExitFunction方法
17
onChildThreadExit += onChildExitFunction;
18![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
//产生一个子线程,ParameterizedThreadStart可以带一个object参数,所以2.0之后我都用这个很方便
20
Thread t = new Thread(new ParameterizedThreadStart(childRunning));
21
t.Name = "子线程1";
22
23
//在这里,我们将onChildThreadExit事件传递进去
24
//注意,这个事件实际上是委托的实例,也是一个对象
25
t.Start(onChildThreadExit);
26
}
27![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
//一个可以处理onChildThreadExit事件的方法
29
private static void onChildExitFunction(object sender, ChildExitEventArgs e)
30
{
31
Thread t = (Thread)sender;
32
Console.WriteLine("子线程名称:{0}", t.Name);
33
Console.WriteLine("消息:{0}", e.Child_Name_CN);
34
}
35![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
//子线程入口,注意参数类型只能是object
37
private static void childRunning(object e)
38
{
39
Thread.Sleep(2000);
40
ChildExitEventArgs msg = new ChildExitEventArgs("子线程已经结束");
41![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
//把传递进来的参数e转换为childExitDelegate委托类型,也就是一个事件
43
childExitDelegate sendEventMessage = (childExitDelegate)e;
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
//触发事件,注意我们要遵守约定,传递事件现场的参数
46
sendEventMessage(Thread.CurrentThread, msg);
47
}
48
}
49![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
//自定义事件参数
51
public class ChildExitEventArgs : EventArgs
52
{
53
private string child_name_cn;
54![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
public string Child_Name_CN
56
{
57
get {return child_name_cn;}
58
}
59![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
public ChildExitEventArgs(string _child_name_cn)
61
{
62
child_name_cn = _child_name_cn;
63
}
64
}
65
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)