我已经为Windows 10开发了我们公司的凭证提供商近一年了 .

现在,我遇到了一个问题 . 我通常不会在论坛,博客上提问,因为在大多数情况下我找到了解决方案,但这次我一直在努力解决问题一个月,我找到了问题的根源 .

问题本身的简要说明:凭证提供程序使用组合框,之前没有问题 . 现在,我重写了整个代码来管理一个大的更新,但是一个奇怪的错误进入了系统 . 该错误仅发生在特定方案中 . 我正在个人笔记本电脑上开发和测试代码 .

场景:

1)笔记本电脑已插入我的显示器/电源等 .

2)我让它睡觉 .

3)我拔掉所有电缆(包括电源) .

4)我从睡梦中醒来 .

比,组合框没有显示默认的选定项目,它是空的 . 当我放下它时,它会显示所有必要的项目 . 比信用卡崩溃和重启,比一切都好 .

我知道,在类似的“奇怪”场景中,在大多数情况下,内存泄漏或相关的东西会导致问题 . 当我检查事件查看器时,它向我显示c0000005,这是访问冲突 . 我开始调试违规的位置 . 我发现该程序引用了一个非常高的索引(超出范围可能是违规的原因)的组合框项目列表数组(在我的情况下实际上是向量) . 实际索引显然存储在“selectedComboItemIndex”变量(DWORD)中 .

我很好奇它什么时候改变了这个奇怪的数字,而不是我发现了一个意想不到的行为 . SetComboBoxSelectedValue方法随机调用一次(当错误发生时)具有疯狂的高索引值 . 我甚至没有在我的代码中调用这个方法,所以我不知道为什么会调用它 . 即使我没有放下组合框,也会发出呼叫 .

我给它一个机会,它可能是credprov本身的一个错误 . 你怎么看?你以前见过这个问题吗?

先感谢您!