void RunBackgroundThread() { while (!disposed) { // Wait for an image to be added or Dispose() to be called backgroundThreadEvent.Wait(); AsyncRestCall asyncRestCall = null; lock (this.lockObject) { if (RequestQueue.Count > 0) { asyncRestCall = RequestQueue.First.Value; RequestQueue.RemoveFirst(); } else { // Queue is empty, so resume waiting backgroundThreadEvent.Reset(); } } if (asyncRestCall != null) { asyncRestCall.ProcessThreadsafe(); } } }
public T ProcessRequest <T>(YamsterHttpRequest request) { AsyncRestCall call = CreateRequestObject(request); call.ProcessThreadsafe(); byte[] bytes = call.GetResult(); return(YamsterApi.ParseJsonResponse <T>(bytes)); }