我创建了一个Shell扩展,它将图标叠加添加到文件和文件夹中。但是,在我的系统上使用OneDrive for Business时,我遇到了问题。当我打开OneDrive共享文件夹时,资源管理器崩溃并出现错误:
只有在取消注册我的Shell扩展时才会解决此问题。我尝试调试崩溃,看到它根本没有引用我的扩展dll:
我的分机是否有问题?或者这是微软的问题吗?注册的叠加层数量低于限制。我甚至尝试重命名OneDrive叠加层以给予它们优先级,但问题仍然存在。
答案 0 :(得分:1)
我终于找到了解决方案。问题是我正在为每个叠加图标检查创建一个指针对象(并在之后立即释放)。由于叠加图标检查是一种多线程操作,因此同时创建了许多对象。
One Drive for Business正在尝试执行某些GC操作(需要大量内存),当存在许多指针时,这些操作会失败。抛出内存不足异常并且资源管理器崩溃。
我现在正在使用一个公共指针对象进行所有图标叠加检查,并解决了这个问题。