|
|
1
1
以下是一些想法:
如果您根本看不到对话框,那么上面的异常可能掩盖了真正的错误。尝试使用“异常时中断”运行并禁用工具->调试->仅限我的代码。try块中的代码看起来非常基本,它们所做的最危险的事情是shell32.dll的SHBrowseForFolder上的PInvoke,如果它生成一个“随机”错误,我会感到惊讶。 如果您正在查看对话框,并且只有在关闭时您才会收到此错误,那么您可以忽略它,但这样做会导致内存泄漏:
你当然可以一直 PInvoke the SHBrowseForFolder 而不是使用对话类。 |
|
|
2
0
|
|
|
3
0
在我的项目中,我遇到了几乎相同的问题(也是一个InvalidCastException),这只是偶尔发生的。 它来自一个没有作为STAThread运行的线程。尽管我的主方法被标记为[STAThread]属性。 你说,你不用单独的线。但也许你不知道 ,因为异步委托不显式地使用线程类,而是作为一个线程类处理。 它们总是MTA线程 . 因此,您必须自己创建线程,并以STAThread的形式显式启动它。 你可以这样做:
|