Internal handle used to signal that there is pending input from the SIP server that the server agent needs to process.

Namespace:  Microsoft.Rtc.Sip
Assembly:  ServerAgent(in ServerAgent.dll)

Syntax

Visual Basic (declaration)
Public 
ReadOnly 
Property 
WaitHandle 
As 
WaitHandle
	
Get
Visual Basic (usage)
Dim 
instance 
As 

ServerAgent
Dim 
value 
As 
WaitHandle

value = instance.
WaitHandle
C#
public 
WaitHandle 
WaitHandle { 
get; }

Remarks

Applications should wait on this handle, and whenever it is signaled, should call [ServerAgent.ProcessEvent()] . This mechanism allows applications to control the concurrency model. For example, applications can queue up work items using the [ThreadPool] class.

Examples

The following example demonstrates the use of a wait handle when queuing work items in a thread pool.

  Copy codeCopy code
public void LCServerEventHandler(ServerAgent sa)
{
   ManualResetEvent autoResetEvent = new ManualResetEvent(false);
   WaitHandle[] handleArray = new WaitHandle[] {
								 myAppServerAgent.WaitHandle,
								 manualResetEvent
						};

   WaitCallback waitCallback = new
WaitCallback(myAppServerAgent.ProcessEvent);

   while (true)
   {
	int signaledEvent = WaitHandle.WaitAny(handleArray);

	if (signaledEvent == 0)  // The server event wait handle
(index = 0) in handleArray was signaled
	{

		// Schedule a worker thread to process the server event
		try
		{
			 if (!ThreadPool.QueueUserWorkItem(waitCallBack))
			 {
				 Console.WriteLine("QueueUserWorkItem fails,
quitting.");
				 return;
			 }

	}
		catch (Exception e)
		{
			 Console.WriteLine("Unexpected exception: {0}\n{1}",
							 e.Message,
							 e.StackTrace);
	}
	 }
	 else // Manual reset event handle (index = 1) in handle
array was signaled
	 {
		Console.WriteLine("Quit handle signaled, worker will quit
now\n");
		break;
	 }
   }
}

See also