柚子Nan--回归原点

Everything can be as easy as you like or as complex as you need.
posts - 231, comments - 970, trackbacks - 17, articles - 29
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

一个简单的检查事件丢失的小工具

Posted on 2005-08-22 17:14 柚子Nan 阅读(1678) 评论(10)  编辑 收藏 所属分类: [技术.Net]

问题起源

在开发Asp.Net程序的时候,我们经常遇到的一个问题就是事件丢失,特别是在软件要发布的时候,这个问题的发生更加严重。明显的症状就是点击按钮,链接以后,程序没有任何反应,如果一个一个的去查,非常的烦人,特别是使用了IEWebControl以后丢失情况更多。


工作环境

开发工具:Visual Studio .Net 2003, .Net Framework1.1

适用范围:检查C#, Asp.Net  程序 


工作原理

事件未丢失的情况有三种:检查某个控件的事件字符串出现的次数是否为0(说明这个控件没有这个事件)或者为2(正常情况下都是2,一个声明,一个实现),还有出现3或者以上(某个事件被人工的调用过)。

事件丢失的情况有一种,某个控件的事件出现次数为1(只是有实现函数,而声明的地方丢失了,这个就是事件丢失)。 

 

举例说明

一个按钮的声明

protected System.Web.UI.WebControls.Button Button1;

它的事件声明(在如下的函数中,如果事件丢失的话,这个函数中的代码将会减少)

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);
}

事件的实现

private void Button1_Click(object sender, System.EventArgs e)

{

    // Do something

}

这个工具会检测Button1Click事件字符串(Button1_Click)会出现几次,就是工作原理中说明的情况。

 

待改进

工作原理:有一个漏洞,如果一个按钮的事件的实现存在,事件的声明丢失了,但是这个事件的实现被人工调用过,那么检查出的数字就是2,或者以上,结果合法,但是实际上却是丢失事件了!

报表工具:出的结果非常简陋,写Txt文件。将来的发展可以做成FxCop报告结果一样的东西XML+XSL,这个工具可以用在DailyBuild时,一并检查这个并Mail通知开发人员。

 

下载地址,欢迎PK

Feedback

#1楼    回复  引用  查看    

2005-08-22 17:24 by zitiger      
我刚才就发生了事件丢失的问题,郁闷,能说下为什么会丢失吗?

#2楼    回复  引用  查看    

2005-08-22 17:28 by 柚子Nan      

有可能是VSS的签入签出可能丢失事件!
也有可能是VS.Net的一个Bug

#3楼    回复  引用    

2005-08-22 17:33 by exhjw [未注册用户]
哈哈,用vb的就不会出现这种情况啦

#4楼    回复  引用    

2005-08-24 16:05 by Derek [未注册用户]
@exhjw
vb也经常出现阿
private sub xxx handles xxx
经常变成
private sub xxx

#5楼    回复  引用  查看    

2005-08-25 17:23 by 柚子Nan      
呵呵,我现在每次都用这个检查一下!
如果每个文件的大小都是0KB,那么一切正常。

各位,是否Windows下也经常丢失事件?
我做Windows的不多,如果有需要,把Windows下的也做完!

#6楼    回复  引用  查看    

2006-03-27 12:16 by 梁广永      
刚看到,下载试用,哈哈

#7楼    回复  引用    

2006-05-24 11:21 by 闫 [未注册用户]
我做的项目经常遇到这种情况,多谢,已用过,很好用。

#8楼    回复  引用    

2006-09-08 16:44 by NetDo [未注册用户]
想法还是比较好的。但说实话,不好用。比较失望。

#9楼    回复  引用    

2006-10-10 15:51 by 9527 [未注册用户]
谢谢很好用,能提供一下源码吗?
saviour_ss@163.com
谢谢

#10楼    回复  引用    

2007-01-01 18:29 by qmxle [未注册用户]
很实用。谢谢。
能共享一下源码吗?

qmxle@msn.com

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印