我理解错误的含义,但很奇怪我想不出任何原因,这是我的简化结构:
public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
IgnoreList = new SortedSet<string>();
IgnoreListQueue IgnoreQueue = new IgnoreListQueue();
}
public class IgnoreListQueue
{
private Dictionary<string, int> myQueue;
public void Add(string s)
{
}
public IgnoreListQueue()
{
myQueue = new Dictionary<string, int>();
}
public bool contains()
{}
~IgnoreListQueue()
{
}
}
public SortedSet<string> IgnoreList;
public IgnoreListQueue IgnoreQueue;
public int LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
{
//IgnoreList is fine here
//IgnoreQueue is null here.
//Example:
// bool boo = IgnoreQueue.contains(some string);
}
}
在 LowLevelKeyboardProc() 函数中,IgnoreQueue 被视为 null,当 VS 调试崩溃时,它确实显示 IgnoreQueue 为空指针。
由于我的程序挂钩键盘笔划,所以我无法在 LowLevelKeyboardProc() 函数中设置断点。但是,我能够在 mainForm() 构造函数中设置断点,并显示 IgnoreQueue 确实已初始化并在该点加载了一些数据。
请问有什么想法吗?