[WPF] Контрол с потоком. Утечка памяти
От: igor-booch Россия  
Дата: 31.01.19 15:58
Оценка:
В моем контроле запускается поток.

Код,
который работает в потоке,
обращается к контролу.

Всё работает замечательно, кроме, того что
контрол не есть garbage collector.

В результате утечка памяти.

Код потока завершается,
когда контрол больше не нужен.

Экземпляр контрола передаётся потоку через аргумент при старте потока (_thread.Start(this)). Метод который используется для потока статический.

garbage collector не ест контрол из-за единственной ссылки на контрол из внутреннего класса .net
ThreadHelper._startArgs <- ParameterizedThreadStart._target

Почему остаётся жить ParameterizedThreadStart не понятно. dotMemory показывает что ссылается на него regular local variable, а откуда эта variable не говорит. Возможно в пуле потоков.
http://rsdn.ru/Info/rules.xml
Отредактировано 02.02.2019 11:34 igor-booch . Предыдущая версия . Еще …
Отредактировано 31.01.2019 18:19 igor-booch . Предыдущая версия .
Отредактировано 31.01.2019 16:06 igor-booch . Предыдущая версия .
Отредактировано 31.01.2019 15:59 igor-booch . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.