简单的多线程通信实例(用委托事件实现)

摘要:
1使用系统;2使用系统。穿线;34namespaceifan5{6//自定义委托声明7publicdelegatevoidchildExitDelegate(objectsender,ChildExitEventArgse);89publicclassTDelegate10{11//自定义事件实际上是上述委托类型的实例12publicstatic
 1简单的多线程通信实例(用委托事件实现)第1张using System;
 2简单的多线程通信实例(用委托事件实现)第1张using System.Threading;
 3简单的多线程通信实例(用委托事件实现)第1张
 4简单的多线程通信实例(用委托事件实现)第1张namespace ifan
 5简单的多线程通信实例(用委托事件实现)第5张简单的多线程通信实例(用委托事件实现)第6张简单的多线程通信实例(用委托事件实现)第7张{
 6简单的多线程通信实例(用委托事件实现)第8张    //自定义委托声明
 7简单的多线程通信实例(用委托事件实现)第8张    public delegate void childExitDelegate(object sender, ChildExitEventArgs e);
 8简单的多线程通信实例(用委托事件实现)第8张
 9简单的多线程通信实例(用委托事件实现)第8张    public class TDelegate
10简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张    简单的多线程通信实例(用委托事件实现)第7张{
11简单的多线程通信实例(用委托事件实现)第8张        //自定义的事件,实际上就是上面那个委托类型的实例
12简单的多线程通信实例(用委托事件实现)第8张        public static event childExitDelegate onChildThreadExit;
13简单的多线程通信实例(用委托事件实现)第8张
14简单的多线程通信实例(用委托事件实现)第8张        private static void Main()
15简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张        简单的多线程通信实例(用委托事件实现)第7张{
16简单的多线程通信实例(用委托事件实现)第8张            //订阅事件,就是说,当onChildThreadExit事件发生时调用onChildExitFunction方法
17简单的多线程通信实例(用委托事件实现)第8张            onChildThreadExit += onChildExitFunction;
18简单的多线程通信实例(用委托事件实现)第8张
19简单的多线程通信实例(用委托事件实现)第8张            //产生一个子线程,ParameterizedThreadStart可以带一个object参数,所以2.0之后我都用这个很方便
20简单的多线程通信实例(用委托事件实现)第8张            Thread t = new Thread(new ParameterizedThreadStart(childRunning));
21简单的多线程通信实例(用委托事件实现)第8张            t.Name = "子线程1";
22简单的多线程通信实例(用委托事件实现)第8张            
23简单的多线程通信实例(用委托事件实现)第8张            //在这里,我们将onChildThreadExit事件传递进去
24简单的多线程通信实例(用委托事件实现)第8张            //注意,这个事件实际上是委托的实例,也是一个对象
25简单的多线程通信实例(用委托事件实现)第8张            t.Start(onChildThreadExit);
26简单的多线程通信实例(用委托事件实现)第32张        }

27简单的多线程通信实例(用委托事件实现)第8张
28简单的多线程通信实例(用委托事件实现)第8张        //一个可以处理onChildThreadExit事件的方法
29简单的多线程通信实例(用委托事件实现)第8张        private static void onChildExitFunction(object sender, ChildExitEventArgs e)
30简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张        简单的多线程通信实例(用委托事件实现)第7张{
31简单的多线程通信实例(用委托事件实现)第8张            Thread t = (Thread)sender;
32简单的多线程通信实例(用委托事件实现)第8张            Console.WriteLine("子线程名称:{0}", t.Name);
33简单的多线程通信实例(用委托事件实现)第8张            Console.WriteLine("消息:{0}", e.Child_Name_CN);
34简单的多线程通信实例(用委托事件实现)第32张        }

35简单的多线程通信实例(用委托事件实现)第8张
36简单的多线程通信实例(用委托事件实现)第8张        //子线程入口,注意参数类型只能是object
37简单的多线程通信实例(用委托事件实现)第8张        private static void childRunning(object e)
38简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张        简单的多线程通信实例(用委托事件实现)第7张{
39简单的多线程通信实例(用委托事件实现)第8张            Thread.Sleep(2000);
40简单的多线程通信实例(用委托事件实现)第8张            ChildExitEventArgs msg = new ChildExitEventArgs("子线程已经结束");
41简单的多线程通信实例(用委托事件实现)第8张
42简单的多线程通信实例(用委托事件实现)第8张            //把传递进来的参数e转换为childExitDelegate委托类型,也就是一个事件
43简单的多线程通信实例(用委托事件实现)第8张            childExitDelegate sendEventMessage = (childExitDelegate)e;
44简单的多线程通信实例(用委托事件实现)第8张
45简单的多线程通信实例(用委托事件实现)第8张            //触发事件,注意我们要遵守约定,传递事件现场的参数
46简单的多线程通信实例(用委托事件实现)第8张            sendEventMessage(Thread.CurrentThread, msg);
47简单的多线程通信实例(用委托事件实现)第32张        }

48简单的多线程通信实例(用委托事件实现)第32张    }

49简单的多线程通信实例(用委托事件实现)第8张
50简单的多线程通信实例(用委托事件实现)第8张    //自定义事件参数
51简单的多线程通信实例(用委托事件实现)第8张    public class ChildExitEventArgs : EventArgs
52简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张    简单的多线程通信实例(用委托事件实现)第7张{
53简单的多线程通信实例(用委托事件实现)第8张        private string child_name_cn;
54简单的多线程通信实例(用委托事件实现)第8张
55简单的多线程通信实例(用委托事件实现)第8张        public string Child_Name_CN
56简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张        简单的多线程通信实例(用委托事件实现)第7张{
57简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张            get 简单的多线程通信实例(用委托事件实现)第7张{return child_name_cn;}
58简单的多线程通信实例(用委托事件实现)第32张        }

59简单的多线程通信实例(用委托事件实现)第8张
60简单的多线程通信实例(用委托事件实现)第8张        public ChildExitEventArgs(string _child_name_cn)
61简单的多线程通信实例(用委托事件实现)第12张简单的多线程通信实例(用委托事件实现)第13张        简单的多线程通信实例(用委托事件实现)第7张{
62简单的多线程通信实例(用委托事件实现)第8张            child_name_cn = _child_name_cn;
63简单的多线程通信实例(用委托事件实现)第32张        }

64简单的多线程通信实例(用委托事件实现)第32张    }

65简单的多线程通信实例(用委托事件实现)第83张}

免责声明:文章转载自《简单的多线程通信实例(用委托事件实现)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Axure使用Windows7发布web服务EXCEL导出,列表宽度大于内容列下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

21-CPU案例:如何提高LLC(最后一级缓存)的命中率

面两讲中,我介绍了性能优化的六大原则和十大策略。从今天开始,我们来通过具体案例的解决方案讲解,了解这些原则和策略是如何应用的。 首先,我们要来探讨的是一个CPU相关的性能优化案例。 这个性能案例,是关于CPU的最后一级缓存的。你应该知道,最后一级缓存(一般也就是L3),如果命中率不高的话,对系统性能会有极坏的影响(相关基础知识建议回顾第15讲)。所以对这一...

多线程之Nsthread的使用方法

一 NSThread的基本使用 1)NSThread创建的四种方式 第一种 创建方式 alloc initwith...... 特点:需要手动启动线程,可以拿到线程对象进行详细设置 //创建线程 NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selecto...

C#多线程中等待线程池中的所有线程执行完毕后再执行下一个线程

网上找的,做个笔记记录一下。 有这么一个需求,就是巡检多台服务器是否都在线,点击巡检按钮后,按行读取DataGridView中的数据,并启行线程执行,这时会存在多个线程同时运行,但是什么时候给出用户提醒,说都巡检完成了呢,需要用到一个线程状态的检测。 最后的效果是这样子的,多个线程对表格按行进行服务器的巡检,只有等所有的巡检线都结束后,等待线程才会弹出一个...

Java中System.out.println()为何会影响内存可见性?

我们先来看段代码: 1 class ThreadVolatileDemo extendsThread{ 2 static boolean flag=true;//注意该变量没有被volatile修饰 3 @Override 4 public voidrun() { 5 while(flag){ 6 S...

IOS 多线程的一些总结

IOS 多线程 有三种主要方法 (1)NSThread (2)NSOperation (3)**   下面简单介绍这三个方法  1.NSThread       调用方法如下:          如函数需要输入参数,可从object传进去。     (1) [NSThread detachNewThreadSelector:@selector(th...

libevent编程疑难解答

http://blog.csdn.net/luotuo44/article/details/39547391 转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39547391 正常情况下应该在libevent的回调中调用event_add函数, 如果想下其他的线程中调用event_add,是线程不...