Memory leaks 调度程序xps内存泄漏
我正在使用com互操作从vb6应用程序调用.net 4.0 dll。在.net中,我通过xaml固定文档创建了一个xps文档,并将其保存到磁盘。这会导致内存泄漏,我在这里找到了一个很好的解决方案 上述对我有效的解决方案涉及以下代码行:Memory leaks 调度程序xps内存泄漏,memory-leaks,dispatcher,xps,Memory Leaks,Dispatcher,Xps,我正在使用com互操作从vb6应用程序调用.net 4.0 dll。在.net中,我通过xaml固定文档创建了一个xps文档,并将其保存到磁盘。这会导致内存泄漏,我在这里找到了一个很好的解决方案 上述对我有效的解决方案涉及以下代码行: Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.SystemIdle, new DispatcherOperationCallback(delegate { return null; }),
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.SystemIdle, new DispatcherOperationCallback(delegate { return null; }), null);
这行代码到底发生了什么。是否通过将委托设置为null,这将处理Dispatcher对象?虽然最初看起来提供的代码没有任何作用,但实际上有一个不明显的副作用,可以解决您的问题。让我们将其分解为以下步骤:
获取当前线程的调度程序Dispatcher.CurrentDispatcher
在调度程序的线程(当前线程)上同步执行提供的委托Invoke
设置执行优先级DispatcherPriority.SystemIdle
创建一个不执行任何操作的委托新建DispatcherOperationCallback(委托{return null;})
作为参数传递给委托null
SystemIdle
的计划任务。这允许在返回vb6应用程序之前执行计划的清理工作