我有一个控制台应用程序,它将文件夹作为输入,获取该文件夹中的所有文件并处理它们。 处理是按顺序进行的,并且对于每个文档,它启动一个单独的STAThread,在其中运行WPF相关操作。
应用程序设法在获取OutOfMemoryException之前处理~1k文档并抛出错误,因为Dispatcher为null。
使用ProcessExplorer查看我可以看到:
问题:
答案 0 :(得分:-1)
已经有一段时间了,但是我想捕捉答案,以防万一有人也遇到这个问题。
该问题是由WPF的两次关闭引起的。
由于我们调用Dispatcher.InvokeShutdown的方式,有时会导致在同一线程中对同一线程进行多次调用,即使这不会导致任何异常,以后每次对WPF的调用都将不再释放该句柄,并且将导致内存泄漏