Shutdown and termination
Applies to: Skype for Business 2015
The following discusses general behavior when components in UCMA 5.0 are terminated, as well as behavior that is expected in applications written using UCMA 5.0:
When a component is terminated, it is responsible for terminating all contained subcomponents. For example, terminating the platform causes all endpoints to be terminated. Terminating an endpoint terminates all conversations. Terminating a conversation terminates all calls, conference sessions, media flows, and any pending conference invitations. Terminating a conference session terminates all MCU sessions.
Terminating a conversation may not result in the termination of components that serve the conversation but might be shared with other conversations. For example, a Player will not be terminated when a conversation is terminated. It is the responsibility of the application to stop a Player (using the Stop method on the Player class) and close all media sources that are being used, unless the application intends to continue using those resources at a later time.
A component will not complete a terminate operation until all contained components and pending operations are completed. The component is responsible for maintaining the pending operations to be terminated when the component is terminated.
BeginTerminate will not throw an exception unless it is passed an invalid argument. For example, the signaling headers collection passed may contain invalid or disallowed headers and an exception is thrown even before the operation can start.
It is permissable to call BeginTerminate multiple times. However, a second call to BeginTerminate while a previous call is pending will not complete until the component is actually terminated.
BeginTerminate on an object can complete synchronously if it is called after the object is already terminated.