Информация об изменениях

Сообщение [WPF] Контрол с потоком. Утечка памяти от 31.01.2019 15:58

Изменено 31.01.2019 18:19 igor-booch

[WPF] Контрол с потоком. Учечка памяти
В моем контроле запускается поток.

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

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

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

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

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

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

Почему остаётся жить ParameterizedThreadStart не понятно. dotMemory показывает что ссылается на него regular local variable, а откуда эта variable не говорит. Возможно в пуле потоков.
[WPF] Контрол с потоком. Учечка памяти
В моем контроле запускается поток.

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

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

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

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

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

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

Почему остаётся жить ParameterizedThreadStart не понятно. dotMemory показывает что ссылается на него regular local variable, а откуда эта variable не говорит. Возможно в пуле потоков.