Exemplo n.º 1
0
 private void GiveBackContext(UploadWorkerContext context)
 {
     lock (this) {
         Ticket ticket;
         do
         {
             if (Queue.Count == 0)
             {
                 AvailableContexts.Enqueue(context);
                 return;
             }
             else
             {
                 ticket = Queue.First.Value;
                 Queue.RemoveFirst();
                 RenumberTickets();
             }
         } while (!ticket.CompletionSource.TrySetResult(context));
         ticket.Context = context;                 // just in case they're not waiting RIGHT NOW
     }
 }
Exemplo n.º 2
0
 public async Task <UploadWorkerContext> GetContext()
 {
     return(Context = await ContextTask);
 }
Exemplo n.º 3
0
 public Ticket(Action <Ticket> onDispose, UploadWorkerContext task)
     : this(onDispose)
 {
     ContextTask = Task.FromResult(Context = task);
 }