Delen via


Objectinterface

Windows biedt functies waarmee de volgende taken worden uitgevoerd:

  • Een object maken
  • Een objectgreep ophalen
  • Informatie over het object ophalen
  • Informatie instellen over het object
  • De objectgreep sluiten
  • Het object vernietigen

Sommige van deze taken zijn niet nodig voor elk object. Sommige van deze taken worden gecombineerd voor bepaalde objecten. Een toepassing kan bijvoorbeeld een gebeurtenisobject maken. Andere toepassingen kunnen de gebeurtenis openen om een unieke ingang voor dit gebeurtenisobject te verkrijgen. Wanneer elke toepassing klaar is met het gebruik van de gebeurtenis, wordt de greep naar het object gesloten. Wanneer er geen openstaande ingangen meer zijn voor het gebeurtenisobject, vernietigt het systeem het gebeurtenisobject. Een toepassing kan daarentegen een ingang verkrijgen voor een bestaand vensterobject. Wanneer het vensterobject niet meer nodig is, moet de toepassing het object vernietigen, waardoor de venstergreep ongeldig wordt.

Af en toe blijft een object in het geheugen nadat alle objectgrepen zijn gesloten. Een thread kan bijvoorbeeld een gebeurtenisobject maken en wachten op de gebeurtenis-handle. Terwijl de thread wacht, kan een andere thread dezelfde gebeurtenisobjectingang sluiten. Het gebeurtenisobject blijft in het geheugen, zonder dat er een gebeurtenisobject wordt verwerkt, totdat het gebeurtenisobject is ingesteld op de gesignaleerde status en de wachtbewerking is voltooid. Op dit moment verwijdert het systeem het object uit het geheugen.

Handles en objecten verbruiken geheugen. Als u de systeemprestaties wilt behouden, moet u dus grepen sluiten en objecten verwijderen zodra ze niet meer nodig zijn. Als u dit niet doet, kan uw toepassing systeemprestaties schaden vanwege overmatig gebruik van het wisselbestand.

Wanneer een proces wordt beëindigd, sluit het systeem automatisch grepen en verwijdert het objecten die door het proces zijn gemaakt. Wanneer een thread echter wordt beëindigd, sluit het systeem meestal geen ingangen of verwijderobjecten. De enige uitzonderingen zijn venster-, haak-, vensterpositie- en DDE-gespreksobjecten (Dynamic Data Exchange). deze objecten worden vernietigd wanneer het maken van de thread wordt beëindigd.