在使用P / Invoke的C#程序中,我更改了窗口的过程地址。 所以我可以对我感兴趣的Windows消息做出反应。
但是系统调用的程序何时? 我有列表,我在我的自定义过程和我的其余代码中操作。 系统如何决定何时可以或不能调用该程序, 并且数据是否有可能被破坏?
e.g。
我在程序中将条目添加到列表中。
我通读了列表并处理了代码中另一部分的条目。
在我设法清除列表之前,该过程将接管并添加更多条目。
返回我的代码的其他部分,清除列表并丢弃新条目而不进行处理。
答案 0 :(得分:1)
您可能不应该使用p / invoke来执行此操作,因为它可能会干扰Windows窗体(或WPF)管理消息泵的方式。
如果必须,您可以尝试以下方法: Setting up Hook on Windows messages
或者您可以在主窗体类中覆盖WndProc,无需进一步说明。