gpt4 book ai didi

c# - WPF框架在后台线程中使用Dispatcher.CurrentDispatcher,导致内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:08 26 4
gpt4 key购买 nike

我正在使用 WPF CollectionView 并且我在后台线程中设置过滤器,因为应用此过滤器需要很长时间。

设置此过滤器会触发方法 ScheduleMapCleanup () 的 CollectionView(因此我无法更改 WPF 框架代码)。在此方法中,使用了 Dispatcher.CurrentDispatcher.BeginInvoke。

但是,因为这是在后台线程中执行的,所以此 Action 永远不会执行(此线程的 Dispatcher 永远不会启动),从而导致内存泄漏:Dispatcher 保留对 CollectionView 的引用。

我该如何解决这个问题?在 UI 线程中设置过滤器不是一个选项。

我可以自己启动 Dispatcher 吗?如果是这样,我该怎么做(Dispatcher.Run 停止一切)?

最佳答案

当我需要从我的后台任务更新我的 UI 线程上的一些控件和绑定(bind)时,我会使用它:

Application.Current.Dispatcher.Invoke(
DispatcherPriority.Loaded,
new Action(() => {

// Code here

})
);

如果不是这样,你能否更具体地说明你想在你的 UI 线程上做什么

关于c# - WPF框架在后台线程中使用Dispatcher.CurrentDispatcher,导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com