/// <summary> /// </summary> private void CommandThreadEntry() { while (!CommandQueue.IsCompleted) { // Server name valid? if (Server == string.Empty) { Thread.Sleep(1 * 1000); continue; } // Execute next command. GitCommandHandler Handler = CommandQueue.Take(); try { Handler(); } catch (Exception Ex) { Logger.Log(LogLevel.Error, LogCategory.Scm, "Encountered exception while running git command: {0}", Ex.Message); } } }
/// <summary> /// </summary> /// <param name="Callback"></param> public void QueueAndAwaitCommand(GitCommandHandler Callback) { ManualResetEvent Event = new ManualResetEvent(false); QueueCommand( () => { try { Callback(); } catch (Exception Ex) { Logger.Log(LogLevel.Error, LogCategory.Scm, "Encountered exception while running git command: {0}", Ex.Message); } finally { Event.Set(); } } ); Event.WaitOne(); }
/// <summary> /// </summary> /// <param name="Callback"></param> public void QueueCommand(GitCommandHandler Callback) { CommandQueue.Add(Callback); }