Udostępnij przez


Synchronizacja wywołań zwrotnych

Asynchroniczna interfejsu API WinInet (używana dla najbardziej typowych protokołów) pozostawia synchronizację mechanizmu wywołania zwrotnego i aplikacji wywołującej jako ćwiczenie dla klienta. Jest to zamierzone, ponieważ pozwala na największy stopień elastyczności. Domyślne protokoły i implementacja moniker adresu URL wykonują tę synchronizację i gwarantują, że aplikacje jednowątkowe i wątkowe nigdy nie muszą zajmować się rywalizacją o dowolny wątek. Oznacza to, że interfejsy klienta IEnumFORMATETC i IBindStatusCallback interfejsy są wywoływane tylko w odpowiednich wątkach. Ta funkcja jest niewidoczna dla użytkownika adresu URL mMoniker, o ile każdy wątek, który wywołuje IMoniker::BindToStorage i IMoniker::BindToObject ma kolejkę komunikatów.

Specyfikacja asynchronicznego moniker wymaga dokładniejszej kontroli nad priorytetyzacji i zarządzania pobieraniem niż jest dozwolona przez winsock lub WinInet. W związku z tym moniker adresu URL zarządza wszystkimi plikami do pobrania dla każdego wątku obiektu wywołującego, używając (w ramach synchronizacji) schematu priorytetów na podstawie specyfikacji IBinding.

adres URL