public void RefreshProjectDataClick(ProteinUpdateType type) { var result = _messageBoxView.AskYesNoQuestion(_view, "Are you sure? This operation cannot be undone.", Core.Application.NameAndVersion); if (result == DialogResult.No) { return; } var progress = new TaskSchedulerProgress <harlam357.Core.ComponentModel.ProgressChangedEventArgs>(); var cancellationTokenSource = new CancellationTokenSource(); var projectDownloadView = _viewFactory.GetProgressDialogAsync(); projectDownloadView.Icon = Properties.Resources.hfm_48_48; projectDownloadView.Text = "Updating Project Data"; projectDownloadView.CancellationTokenSource = cancellationTokenSource; projectDownloadView.Progress = progress; projectDownloadView.Shown += (s, args) => { var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext(); long updateArg = 0; if (type == ProteinUpdateType.Project) { updateArg = _model.SelectedHistoryEntry.ProjectID; } else if (type == ProteinUpdateType.Id) { updateArg = _model.SelectedHistoryEntry.ID; } _database.UpdateProteinDataAsync(type, updateArg, cancellationTokenSource.Token, progress) .ContinueWith(t => { if (t.IsFaulted) { var ex = t.Exception.Flatten().InnerException; Logger.Error(ex.Message, ex); _messageBoxView.ShowError(_view, ex.Message, Core.Application.NameAndVersion); } else { _model.ResetBindings(true); } projectDownloadView.Close(); }, uiTaskScheduler); }; projectDownloadView.ShowDialog(_view); _viewFactory.Release(projectDownloadView); }
public void Security_Hash_File_WithProgress_Test() { string hashHex; bool progressRaised = false; var progress = new TaskSchedulerProgress<int>(new CurrentThreadTaskScheduler(), value => progressRaised = true); using (var h1 = new Hash(HashProvider.CRC32)) using (var stream = File.OpenRead(Path.Combine(Environment.CurrentDirectory, @"TestFiles\gettysburg.txt"))) { hashHex = h1.Calculate(stream, progress).Bytes.ToHex(); } Assert.AreEqual(hashHex, "E37F6423"); Assert.IsTrue(progressRaised); progressRaised = false; progress = new TaskSchedulerProgress<int>(new CurrentThreadTaskScheduler(), value => progressRaised = true); using (var h2 = new Hash(HashProvider.MD5)) using (var stream = File.OpenRead(Path.Combine(Environment.CurrentDirectory, @"TestFiles\sample.doc"))) { hashHex = h2.Calculate(stream, progress).Bytes.ToHex(); } Assert.AreEqual(hashHex, "4F32AB797F0FCC782AAC0B4F4E5B1693"); Assert.IsTrue(progressRaised); }
public void ToolsDownloadProjectsClick() { _proteinService.ResetRefreshParameters(); var progress = new TaskSchedulerProgress<harlam357.Core.ComponentModel.ProgressChangedEventArgs>(); var projectDownloadView = _viewFactory.GetProjectDownloadDialog(); projectDownloadView.Progress = progress; Task<IEnumerable<ProteinLoadInfo>> refreshTask = null; projectDownloadView.Shown += (s, args) => { var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext(); refreshTask = _proteinService.RefreshAsync(progress); refreshTask .ContinueWith(t => _messageBoxView.ShowError(projectDownloadView, t.Exception.Flatten().InnerException.Message, Core.Application.NameAndVersion), CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, uiTaskScheduler) .ContinueWith(t => projectDownloadView.Close(), uiTaskScheduler); }; projectDownloadView.ShowDialog(_view); _viewFactory.Release(projectDownloadView); if (refreshTask.Status == TaskStatus.RanToCompletion && refreshTask.Result != null) { var proteinChanges = refreshTask.Result.Where(x => x.Result != ProteinLoadResult.NoChange).ToList(); if (proteinChanges.Count > 0) { _retrievalModel.RunClientRetrieval(); using (var dlg = new ProteinLoadResultsDialog()) { dlg.DataBind(proteinChanges); dlg.ShowDialog(_view); } } } }
public void RefreshProjectDataClick(ProteinUpdateType type) { var result = _messageBoxView.AskYesNoQuestion(_view, "Are you sure? This operation cannot be undone.", Core.Application.NameAndVersion); if (result == DialogResult.No) { return; } var progress = new TaskSchedulerProgress<harlam357.Core.ComponentModel.ProgressChangedEventArgs>(); var cancellationTokenSource = new CancellationTokenSource(); var projectDownloadView = _viewFactory.GetProgressDialogAsync(); projectDownloadView.Icon = Properties.Resources.hfm_48_48; projectDownloadView.Text = "Updating Project Data"; projectDownloadView.CancellationTokenSource = cancellationTokenSource; projectDownloadView.Progress = progress; projectDownloadView.Shown += (s, args) => { var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext(); long updateArg = 0; if (type == ProteinUpdateType.Project) { updateArg = _model.SelectedHistoryEntry.ProjectID; } else if (type == ProteinUpdateType.Id) { updateArg = _model.SelectedHistoryEntry.ID; } _database.UpdateProteinDataAsync(type, updateArg, cancellationTokenSource.Token, progress) .ContinueWith(t => { if (t.IsFaulted) { var ex = t.Exception.Flatten().InnerException; Logger.Error(ex.Message, ex); _messageBoxView.ShowError(_view, ex.Message, Core.Application.NameAndVersion); } else { _model.ResetBindings(true); } projectDownloadView.Close(); }, uiTaskScheduler); }; projectDownloadView.ShowDialog(_view); _viewFactory.Release(projectDownloadView); }