前两个帖子发的比较失败,都是300分,却都不超过20个人回答...
前两个帖子发的比较失败,都是300分,却都不超过20个人,可能是代码比较多,大家都懒得看
http://topic.csdn.net/u/20100913/18/3cefd0c9-f9c5-4f28-af87-5c99dd511a67.html 8个回帖(算我)
sp1234老大没看清题目
shishangdere_2007这位兄弟给的意见。。。
http://topic.csdn.net/u/20100913/18/47f18994-04ea-41cf-8f12-4e0ce0e72ec6.html 17个回帖(算我)
Sandy945牛气,一眼看出了问题所在。
wuyq11老大这个代码,搞的我晕头转向的,应该也是实例化的意思。
sp1234也有实例化的踪影,大家都是牛人。
上面两个贴还没结,希望大家能给点儿设计方面的意见。
大家说是不是比较失败?这个也是300分,不过代码比较少哦。。
问题是这样:
一个事件如果有多个侦听者注册的话,那么想用异步执行的方式,如下:
if ( someEvent!= null)
{
Delegate[] dels=someEvent.GetInvocationList();
foreach (Delegate del in dels)
{
someHander tim = (someHander)del;
tim.BeginInvoke(dtTime, null, null);
}
}
红色字体是相应的事件,蓝色字体是相应的委托。
问题是:如果注册事件的比较少的话,那线程数无所谓,如果有几百甚至几千个方法注册了事件,那么
Delegate[] dels=someEvent.GetInvocationList();
dels就是几百几千个啊,那线程不就要有几百几千个吗?大家有没有方法能减少这个线程数目啊?
我目前有个想法:可以确定一个线程数,比如说5个线程,让这5个线程去执行所有的dels,但是具体不知道该怎么做,请大家指点。