.Net Timeouts: WaitForSingleObject по сравнению с таймером

Сборка "мусора" работает путем отслеживания корневых каталогов приложения. Корневые каталоги приложения являются местами хранения, которые содержат ссылки на объекты на управляемой "куче" (или на пустой указатель). В.NET корни

  1. Ссылки на глобальные объекты
  2. Ссылки на статические объекты
  3. Ссылки на статические поля
  4. Ссылки на стеке к локальным объектам
  5. , Ссылки на стеке к параметрам объекта передали методам
  6. Ссылки на объекты, ожидающие, чтобы быть завершенными
  7. Ссылки в регистрах ЦП к объектам на управляемой "куче"

, список активных корней ведется CLR. Сборщик "мусора" работает путем рассмотрения объектов на управляемой "куче" и наблюдения, которые все еще доступны приложением, то есть, доступны через корневой каталог приложения. Такой объект считается внедренным.

Теперь предполагают, что у Вас есть родительская форма, которая содержит ссылки на дочерние формы, и эти дочерние формы содержат ссылки на родительскую форму. Далее, предположите, что приложение больше не содержит ссылки на родителя для или любую из дочерних форм. Затем в целях сборщика "мусора" эти управляемые объекты больше не базируются и будут собраны "мусор" в следующий раз, когда сборка "мусора" происходит.

9
задан Ned Batchelder 12 July 2010 в 15:09
поделиться

1 ответ

Нет лучше. Таймер используется, чтобы периодически «подталкивать» ваш поток к каким-либо действиям. WaitForSingleObject ждет дескрипторов. Тайм-аут есть, поэтому вы можете использовать его, чтобы решить прекратить ожидание, вместо того, чтобы застрять в тупике. Использование таймера для выхода объекта waitforsingle из блокировки не требуется, если вы используете тайм-аут.

Затраты ресурсов незначительны для обоих. Я не могу сказать, какой подход вам следует использовать, потому что он сильно зависит от вашей ситуации с кодом.

1
ответ дан 3 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: