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