ISynchronize interface

Provides asynchronous communication between objects about the occurrence of an event. Objects that implement ISynchronize can receive indications that an event has occurred, and they can respond to queries about the event. In this way, clients can make sure that one request has been processed before they submit a subsequent request that depends on completion of the first one.

When to implement

You do not typically implement ISynchronize. This interface is implemented on two system-supplied synchronization objects, the standard event object (CLSID_StdEvent) and the manual reset event object (CLSID_ManualResetEvent). Objects can aggregate one of these objects to obtain an implementation of ISynchronize.

When to use

Server objects use ISynchronize to indicate that an event has occurred. Clients can then use ISynchronize to make sure that an event has occurred before they process additional requests. For example, a client making calls on the asynchronous interface of a call object would call a Begin_ method on the asynchronous interface and then call ISynchronize::Wait to determine whether the Begin_ method was finished processing. Only after determining that the Begin_ method was complete would the client call the corresponding Finish_ method.


The ISynchronize interface inherits from the IUnknown interface. ISynchronize also has these types of members:


The ISynchronize interface has these methods.


Sets the synchronization object to the nonsignaled state.


Sets the synchronization object to the signaled state and causes pending wait operations to return S_OK.


Waits for the synchronization object to be signaled or for a specified timeout period to elapse, whichever comes first.



Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]






IID_ISynchronize is defined as 00000030-0000-0000-C000-000000000046

See also