Advertisement
Guest User

Untitled

a guest
Apr 7th, 2014
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.08 KB | None | 0 0
  1. public class UploadRequestProcessor
  2. {
  3.     public ObservableCollection<UploadRequest> UploadRequests { get; private set; }
  4.     private readonly Dispatcher dispatcher;
  5.     private readonly BlockingCollection<UploadRequest> uploadRequestsBlocking;
  6.     private Task consumerTask;
  7.  
  8.     public UploadRequester(Dispatcher dispatcher)
  9.     {
  10.         this.dispatcher = dispatcher;
  11.         this.UploadRequests = new ObservableCollection<UploadRequest>();
  12.         this.uploadRequestsBlocking = new BlockingCollection<UploadRequest>();
  13.         this.consumerTask = Task.Factory.StartNew(this.ConsumeUploadRequests);
  14.     }
  15.  
  16.     public void AddUploadRequest(UploadRequest uploadRequest)
  17.     {
  18.         this.UploadRequests.Add(uploadRequest);
  19.         this.uploadRequestsBlocking.Add(uploadRequest);
  20.     }
  21.  
  22.     private void ConsumeUploadRequests()
  23.     {
  24.         foreach (var uploadRequest in this.uploadRequestsBlocking.GetConsumingEnumerable())
  25.         {
  26.             uploadRequest.Status = "Uploading...";
  27.  
  28.             Thread.Sleep(2000);
  29.             uploadRequest.Status = "Successfully uploaded";
  30.  
  31.             Thread.Sleep(500);
  32.             this.dispatcher.Invoke(() => this.UploadRequests.Remove(uploadRequest));
  33.         }
  34.     }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement