/// <summary> /// The WaitCallback delegate object in actual of our thread pool. /// </summary> /// <param name="state"></param> static void Callback(object state) { WaitCallbackHelper wcbh = (state as WaitCallbackHelper); wcbh.Callback(); (wcbh.WaitHandle as AutoResetEvent).Set(); }
/// <summary> /// Queues a method for execution. /// The method executes when a thread pool thread becomes available. /// </summary> /// <param name="proc"></param> /// <returns></returns> public static bool QueueUserWorkItem(WaitCallbackNew callback) { WaitCallbackHelper wcbh = new WaitCallbackHelper(); wcbh.Callback = callback; wcbh.WaitHandle = new AutoResetEvent(false); if (AutoResetEvents == null) { AutoResetEvents = new List<WaitHandle>(); } AutoResetEvents.Add(wcbh.WaitHandle); return ThreadPool.QueueUserWorkItem(new WaitCallback(Callback), wcbh); }
/// <summary> /// Queues a method for execution. /// The method executes when a thread pool thread becomes available. /// </summary> /// <param name="proc"></param> /// <returns></returns> public static bool QueueUserWorkItem(WaitCallbackNew callback) { WaitCallbackHelper wcbh = new WaitCallbackHelper(); wcbh.Callback = callback; wcbh.WaitHandle = new AutoResetEvent(false); if (AutoResetEvents == null) { AutoResetEvents = new List <WaitHandle>(); } AutoResetEvents.Add(wcbh.WaitHandle); return(ThreadPool.QueueUserWorkItem(new WaitCallback(Callback), wcbh)); }