Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class UploadRequestProcessor
- {
- public ObservableCollection<UploadRequest> UploadRequests { get; private set; }
- private readonly Dispatcher dispatcher;
- private readonly BlockingCollection<UploadRequest> uploadRequestsBlocking;
- private Task consumerTask;
- public UploadRequester(Dispatcher dispatcher)
- {
- this.dispatcher = dispatcher;
- this.UploadRequests = new ObservableCollection<UploadRequest>();
- this.uploadRequestsBlocking = new BlockingCollection<UploadRequest>();
- this.consumerTask = Task.Factory.StartNew(this.ConsumeUploadRequests);
- }
- public void AddUploadRequest(UploadRequest uploadRequest)
- {
- this.UploadRequests.Add(uploadRequest);
- this.uploadRequestsBlocking.Add(uploadRequest);
- }
- private void ConsumeUploadRequests()
- {
- foreach (var uploadRequest in this.uploadRequestsBlocking.GetConsumingEnumerable())
- {
- uploadRequest.Status = "Uploading...";
- Thread.Sleep(2000);
- uploadRequest.Status = "Successfully uploaded";
- Thread.Sleep(500);
- this.dispatcher.Invoke(() => this.UploadRequests.Remove(uploadRequest));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement