ServerAgent.WaitHandle property

Lync 2013

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)

public WaitHandle WaitHandle { get; }

Property value

Type: System.Threading.WaitHandle

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.

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

public void LCServerEventHandler(ServerAgent sa)
   ManualResetEvent autoResetEvent = new ManualResetEvent(false);
   WaitHandle[] handleArray = new WaitHandle[] {

   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
             if (!ThreadPool.QueueUserWorkItem(waitCallBack))
                 Console.WriteLine("QueueUserWorkItem fails, quitting.");

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