/// <summary>
 /// Run the requests
 /// </summary>
 private void Run()
 {
     while (!disposed)
     {
         RequestItem request = null;
         lock (requestsLock)
         {
             if (requests.Count > 0)
             {
                 request = requests[0];
                 requests.RemoveAt(0);
             }
             else
             {
                 Monitor.Wait(requestsLock);
             }
         }
         if (request != null)
         {
             request.Execute(ui, lb);
         }
     }
 }