WeakReference — Klasa

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

Składnia

class WeakReference;

Uwagi

Reprezentuje słabe odwołanie, które może być używane z środowisko wykonawcze systemu Windows lub klasycznym COM. Słabe odwołanie reprezentuje obiekt, który może lub nie jest dostępny.

WeakReference Obiekt utrzymuje silne odwołanie, które jest wskaźnikiem do obiektu i silną liczbą odwołań, która jest liczbą kopii silnego odwołania, które zostały rozproszone przez metodęResolve(). Chociaż silna liczba odwołań jest niezerowa, silne odwołanie jest prawidłowe i obiekt jest dostępny. Gdy silna liczba odwołań stanie się zero, silne odwołanie jest nieprawidłowe i obiekt jest niedostępny.

WeakReference Obiekt jest zwykle używany do reprezentowania obiektu, którego istnienie jest kontrolowane przez wątek zewnętrzny lub aplikację. Na przykład skonstruuj WeakReference obiekt z odwołania do obiektu pliku. Gdy plik jest otwarty, silne odwołanie jest prawidłowe. Jeśli jednak plik zostanie zamknięty, silne odwołanie stanie się nieprawidłowe.

Metody WeakReference są bezpieczne wątkami.

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
WeakReference::WeakReference Inicjuje nowe wystąpienie klasy WeakReference.
WeakReference::~WeakReference Deinitializes (niszczy) bieżące wystąpienie WeakReference klasy.

Metody publiczne

Nazwa/nazwisko opis
WeakReference::D ecrementStrongReference Dekrementuje silną liczbę odwołań bieżącego WeakReference obiektu.
WeakReference::IncrementStrongReference Zwiększa silną liczbę odwołań bieżącego WeakReference obiektu.
WeakReference::Resolve Ustawia określony wskaźnik na bieżącą silną wartość referencyjną, jeśli silna liczba odwołań jest niezerowa.
WeakReference::SetUnknown Ustawia silne odwołanie bieżącego WeakReference obiektu do określonego wskaźnika interfejsu.

Hierarchia dziedziczenia

WeakReference

Wymagania

Nagłówek: implements.h

Przestrzeń nazw: Microsoft::WRL::D etails

WeakReference::~WeakReference

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

virtual ~WeakReference();

Wartość zwracana

Uwagi

Deinitializuje bieżące wystąpienie WeakReference klasy.

WeakReference::D ecrementStrongReference

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

ULONG DecrementStrongReference();

Uwagi

Dekrementuje silną liczbę odwołań bieżącego WeakReference obiektu.

Gdy silna liczba odwołań zmieni się na zero, silne odwołanie jest ustawione na nullptrwartość .

Wartość zwracana

Zdekrementowana silna liczba odwołań.

WeakReference::IncrementStrongReference

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

ULONG IncrementStrongReference();

Wartość zwracana

Zwiększana liczba silnych odwołań.

Uwagi

Zwiększa silną liczbę odwołań bieżącego WeakReference obiektu.

WeakReference::Resolve

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

STDMETHOD(Resolve)
   (REFIID riid,
   _Deref_out_opt_ IInspectable **ppvObject
);

Parametry

Riid
Identyfikator interfejsu.

ppvObject
Po zakończeniu tej operacji kopia bieżącego silnego odwołania, jeśli silna liczba odwołań jest niezerowa.

Wartość zwracana

  • S_OK, jeśli ta operacja zakończy się pomyślnie, a silna liczba odwołań wynosi zero. Parametr ppvObject jest ustawiony na nullptrwartość .

  • S_OK, jeśli ta operacja zakończy się pomyślnie, a silna liczba odwołań jest niezerowa. Parametr ppvObject jest ustawiony na silne odwołanie.

  • W przeciwnym razie hrESULT wskazujący przyczynę niepowodzenia tej operacji.

Uwagi

Ustawia określony wskaźnik na bieżącą silną wartość referencyjną, jeśli silna liczba odwołań jest niezerowa.

WeakReference::SetUnknown

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

void SetUnknown(
   _In_ IUnknown* unk
);

Parametry

Unk
Wskaźnik do IUnknown interfejsu obiektu.

Uwagi

Ustawia silne odwołanie bieżącego WeakReference obiektu do określonego wskaźnika interfejsu.

WeakReference::WeakReference

Obsługuje infrastrukturę biblioteki WRL i nie jest przeznaczona do użycia bezpośrednio z kodu.

WeakReference();

Uwagi

Inicjuje nowe wystąpienie klasy WeakReference.

Silny wskaźnik odniesienia dla WeakReference obiektu jest inicjowany do nullptr, a silna liczba odwołań jest inicjowana do 1.