Могу ли я предотвратить сборщик мусора от остановки некоторых из моих потоков? - PullRequest
2 голосов
/ 12 ноября 2008

Возможно ли в приложении Compact Framework предотвратить сборщик мусора от безоговорочной остановки хотя бы одного из потоков или заблокировать сбор GC хотя бы в некоторых частях кода?

Я думаю, что это связано с установкой приоритетов в реальном времени, но я нашел много советов против этого.

Ответы [ 2 ]

3 голосов
/ 12 ноября 2008

ГХ должен заморозить все потоки для проверки всех объектов. Как это может сделать свою работу, если какой-то поток работает и модифицирует / создает объект?

Лучше не делай этого.

Что вы можете сделать, это вызвать GC.Collect () и GC.WaitForPendingFinalizers (), прежде чем войти в состояние, в котором вы не хотите, чтобы вас прерывали. Это даст вам некоторое время.

0 голосов
/ 28 марта 2011

Неуправляемому коду запрещен доступ к неподкрепленным управляемым объектам, но он будет работать без блокировки во время сбора мусора. Если у вас есть определенные подпрограммы, которые должны работать во время сбора мусора, и им не требуется доступ к неподкрепленным управляемым объектам, вы можете написать эти подпрограммы в неуправляемом коде, и GC не повлияет на них.

...