ServerAgent.WaitHandle Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Internal handle used to signal that there is pending input from the SIP server that the server agent needs to process.
public:
property System::Threading::WaitHandle ^ WaitHandle { System::Threading::WaitHandle ^ get(); };
public System.Threading.WaitHandle WaitHandle { get; }
Public ReadOnly Property WaitHandle As WaitHandle
Property Value
Examples
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[] {
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;
}
}
}
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.