public static RegisterWaitForSingleObject ( System waitObject, System callBack, object state, System timeout, bool executeOnlyOnce ) : System.Threading.RegisteredWaitHandle | ||
waitObject | System | |
callBack | System | |
state | object | |
timeout | System | |
executeOnlyOnce | bool | |
리턴 | System.Threading.RegisteredWaitHandle |
public static System.Threading.RegisteredWaitHandle RegisterWaitForSingleObject(System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, System.TimeSpan timeout, bool executeOnlyOnce)
{
throw null;
}
ThreadPool::RegisterWaitForSingleObject ( System waitObject, System callBack, object state, int millisecondsTimeOutInterval, bool executeOnlyOnce ) : System.Threading.RegisteredWaitHandle | |
ThreadPool::RegisterWaitForSingleObject ( System waitObject, System callBack, object state, long millisecondsTimeOutInterval, bool executeOnlyOnce ) : System.Threading.RegisteredWaitHandle | |
ThreadPool::RegisterWaitForSingleObject ( System waitObject, System callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce ) : System.Threading.RegisteredWaitHandle |
public static Task WaitAsync(this SemaphoreSlim semaphore) { if (semaphore.Wait(0)) { return(TaskEx.TaskCompleted); } var tcs = new TaskCompletionSource <bool>(); WaitOrTimerCallback waitOrTimerCallback = null; waitOrTimerCallback = (state, timedOut) => { if (semaphore.Wait(0)) { tcs.TrySetResult(true); return; } ThreadPool.RegisterWaitForSingleObject(semaphore.AvailableWaitHandle, waitOrTimerCallback, null, Timeout.Infinite, true); }; waitOrTimerCallback(null, false); return(tcs.Task); }