Internal handle used to signal that there is pending input from the SIP server that the server agent needs to process.
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 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; } } } |