protected void ExecuteUpload(IExecuteFlickrUploaderWorkflowMessage message, Flickr flickr, FileInfo inputFilePath) { var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; var task = Task.Factory.StartNew(() => { }); task.ContinueWith((t) => { if (!cancellationToken.IsCancellationRequested) { FlickrUploaderService.Uploaders.Add(message, new CancellableTask { Task = task, CancellationTokenSource = cancellationTokenSource }); var asyncUploadSettings = new AsyncUploadSettings { Message = message, InputStream = inputFilePath.OpenRead() }; var uploader = new Uploader(asyncUploadSettings); flickr.OnUploadProgress += uploader.OnUploadProgress; flickr.UploadPictureAsync(asyncUploadSettings.InputStream, inputFilePath.Name, message.Settings.MetaData.Title, message.Settings.MetaData.Description, message.Settings.MetaData.Keywords, message.Settings.MetaData.IsPublic, message.Settings.MetaData.IsFamily, message.Settings.MetaData.IsFriend, message.Settings.MetaData.ContentType, message.Settings.MetaData.SafetyLevel, message.Settings.MetaData.HiddenFromSearch, result => { FlickrUploaderService.Uploaders.Remove(message); uploader.OnUploadCompleted(result); } ); } cancellationToken.ThrowIfCancellationRequested(); } , cancellationToken); }
public Uploader(AsyncUploadSettings asyncUploadSettings) { _asyncUploadSettings = asyncUploadSettings; }