private static LidgrenSession EndCreateOrJoin(IAsyncResult result)
{
LidgrenSession session = null;
try
{
var asyncResult = (AsyncResult) result;
result.AsyncWaitHandle.WaitOne();
if (asyncResult.AsyncDelegate is AsynchronousCreate)
session = ((AsynchronousCreate) asyncResult.AsyncDelegate).EndInvoke(result);
else if (asyncResult.AsyncDelegate is AsynchronousJoin)
session = ((AsynchronousJoin)asyncResult.AsyncDelegate).EndInvoke(result);
}
finally
{
result.AsyncWaitHandle.Close();
}
return session;
}