急!事件处理程序 是在引发该事件的线程内执行? 还是被封送到处理程序所属对象的线程内执行? 例如,有二线程,主线程就是一个主FORM,另外一个线程执行一个有事件成员的类实例,当从线程产事件时,便调用了主FORM线程上的一方法(委托),那么这个方法是在主线程执行呢?还是在从线程执行?如果是在从线程执行?如何让其封送主线程执行? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 根据需要,你也可以提供 evennameBefore、evennameAfter两个事件让调用者自己选择 TO flygoldfish(长江支流) 能不能再仔细一点啊,谢谢 http://www.baidu.com/s?wd=c%23+%B6%E0%CF%DF%B3%CC+%D6%F7%CF%DF%B3%CC&cl=3这是你要的资料,全, 事件一般是用在不同类之间的交互,如果你的主线程和另一条线程都是执行同一个类的方法就不需用事件了!事件的使用要分为首先当然要声明事件,为事件定义一个所属的委托第二就是要有代码去触发事件的发生第三就是订阅事件(当事件发生时会执行订阅事件委托的函数)//事件所属的委托public delegate void eventdelegate(string msg);public class A{ public event eventdelegate event1;//.......................//触发事件 private void eventdoing() { string msg="事件传递的参数!"; if(event1!=null) event1(msg); }//........}这样声明后就可以调用事件了A a=new A();a.event1+=new eventdelegate(被委托的方法);这样当事件发生时你那个被委托的方法就可以被执行了 Flashcom(虫虫) ,小虫虫好像你没回答我的问题哦,,,你在教俺怎么写事件代码,这个我会的 都可以。典型的Control类实现了ISynchronizeInvoke接口,其中的beginInvoke()函数有如下说明:“在执行此对象的主线程上执行委托。”举个例子,如果你在一个窗体类中加入了某个control类的实例,并订阅了该control类公开的某个event1。而该control类自己开了个子线程,并在此线程中invoke了event1的处理函数,那么这就是一个跨线程的回调事件。以上如果没听懂的话,给我邮箱,我发个例子给你。刚学C#不久,除了实现了ISynchronizeInvoke接口的方法之外我还不知道其它能跨线程回调事件并传送参数的方法。而一般的直接用delegate似乎只在子线程里调用函数。另外,借楼主宝地问个问题。上面说的BeginInvoke()除了可以跨线程调用event,还能跨线程传参,可以说非常方便。但是前提是一定要实现了ISynchronizeInvoke接口。但如何实现了ISynchronizeInvoke接口呢?除了实现了ISynchronizeInvoke接口还有其它跨线程通信的方法吗?就像原来vc中的postThreadMessage()那样。哪位高手指教! 如果一定要是主线程执行,就用我先前说的方法吧,把要传递的参数封装成类,委托的方法是把这个封装的类放进一个队列(例如ArrayList),里,再由主线程定时去扫这个队列,有就解出这个封装的类再执行 Excel插件开发中无法定位到当前打开工作簿,求救! SwfUploadDemo怎么利用呀?? 我晕,registry.getvalue()读取整数溢出了咋个办? 请高手解决!数据库中有360000条数据需要快速转换,怎么转啊?? select * from A,B,从这两个表中选择的记录集DataSet,如何访问和使用记录集DataSet中的记录和字段? 巨牛!!!看看这个cs结构的系统是怎么实现数据显示!(附图) 线程池的用法?? 请问错误是怎么回事呀? C#与SQL Server的一个问题 急救!C#问题 vs.net新建项问题 简单的问题
这是你要的资料,全,
事件的使用要分为
首先当然要声明事件,为事件定义一个所属的委托
第二就是要有代码去触发事件的发生
第三就是订阅事件(当事件发生时会执行订阅事件委托的函数)//事件所属的委托
public delegate void eventdelegate(string msg);
public class A
{
public event eventdelegate event1;//.......................
//触发事件
private void eventdoing()
{
string msg="事件传递的参数!";
if(event1!=null)
event1(msg);
}
//........
}这样声明后就可以调用事件了
A a=new A();
a.event1+=new eventdelegate(被委托的方法);
这样当事件发生时你那个被委托的方法就可以被执行了
以上如果没听懂的话,给我邮箱,我发个例子给你。
刚学C#不久,除了实现了ISynchronizeInvoke接口的方法之外我还不知道其它能跨线程回调事件并传送参数的方法。而一般的直接用delegate似乎只在子线程里调用函数。
另外,借楼主宝地问个问题。
上面说的BeginInvoke()除了可以跨线程调用event,还能跨线程传参,可以说非常方便。但是前提是一定要实现了ISynchronizeInvoke接口。但如何实现了ISynchronizeInvoke接口呢?
除了实现了ISynchronizeInvoke接口还有其它跨线程通信的方法吗?就像原来vc中的postThreadMessage()那样。
哪位高手指教!