public static void WaitFor(IAsyncResult async) { if (async.IsCompleted) { return; } if (AsyncTool.IsMainThread) { WaitObject.ActiveWait(async); } else { if (async.AsyncWaitHandle != null) { async.AsyncWaitHandle.WaitOne(); } else { while (!async.IsCompleted) { Thread.Sleep(100); } } } }
public WaitContext() { if (!AsyncTool.IsMainThread) { return; } WaitObject.EnterContext(); }
public static void EnterContext() { if (Instance == null) { Instance = new WaitObject(); } Instance.m_contextDepth++; }
public void Dispose() { if (!AsyncTool.IsMainThread) { return; } WaitObject.LeaveContext(); }
public static void LeaveContext() { Instance.m_contextDepth--; if (Instance.m_contextDepth == 0) { Instance.Close(); Instance = null; } }