'System.Runtime.InteropServices.SEHException' occurred in Unknown Module.
Additional information: External component has thrown an exception.
An exception 'System.NullReferenceException' has occured in...
追踪了很久也找不到问题所在,只是知道异常出现在hook程序中,并切程序一开始并不出现异常,过一段时间之后才会出现异常。
下面是原来的代码:
最后怀疑是垃圾回收器的问题,怀疑他把windowCallback给回收了:
更改代码,把windowCallback作为类成员,在构造函数中初始化
问题解决。
结论:使用Window API时,如果需要传入Delegete作为参数,要自己保证Delegete的生命周期足够长,这种情况下最好声明为类成员,因为如果你声明为局部变量,所在作用域执行结束,Delegete会被回收。