From 25c4bc4435d21bfc0d88a1bfd173f669bde57439 Mon Sep 17 00:00:00 2001 From: Jaex Date: Mon, 30 May 2016 15:00:12 +0300 Subject: [PATCH] Added UploadCompleted event to Task, Added upload duration to TaskInfo which separate from task duration --- ShareX/Forms/MainForm.cs | 2 +- ShareX/TaskInfo.cs | 2 ++ ShareX/TaskManager.cs | 25 ++++++++++++++++++++++++- ShareX/WorkerTask.cs | 31 ++++++++++++++++++++++++++----- 4 files changed, 53 insertions(+), 7 deletions(-) diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 454f44c05..0a1ebba59 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -1758,7 +1758,7 @@ private void InitHotkeys() private void HandleHotkeys(HotkeySettings hotkeySetting) { - DebugHelper.WriteLine("Hotkey triggered: " + hotkeySetting); + DebugHelper.WriteLine("Hotkey triggered. " + hotkeySetting); if (hotkeySetting.TaskSettings.Job != HotkeyType.None) { diff --git a/ShareX/TaskInfo.cs b/ShareX/TaskInfo.cs index c5102a6c5..36f4b3581 100644 --- a/ShareX/TaskInfo.cs +++ b/ShareX/TaskInfo.cs @@ -138,6 +138,8 @@ public TimeSpan TaskDuration } } + public Stopwatch UploadDuration { get; set; } + public UploadResult Result { get; set; } public TaskInfo(TaskSettings taskSettings) diff --git a/ShareX/TaskManager.cs b/ShareX/TaskManager.cs index 7fa88317c..680945ef1 100644 --- a/ShareX/TaskManager.cs +++ b/ShareX/TaskManager.cs @@ -65,6 +65,7 @@ public static void Start(WorkerTask task) task.StatusChanged += task_StatusChanged; task.UploadStarted += task_UploadStarted; task.UploadProgressChanged += task_UploadProgressChanged; + task.UploadCompleted += task_UploadCompleted; task.TaskCompleted += task_TaskCompleted; task.UploadersConfigWindowRequested += Task_UploadersConfigWindowRequested; } @@ -272,6 +273,28 @@ private static void task_UploadProgressChanged(WorkerTask task) } } + private static void task_UploadCompleted(WorkerTask task) + { + TaskInfo info = task.Info; + + if (info != null && info.Result != null && !info.Result.IsError) + { + string url = info.Result.ToString(); + + if (!string.IsNullOrEmpty(url)) + { + string text = $"Upload completed. URL: {url}"; + + if (info.UploadDuration != null) + { + text += $", Duration: {info.UploadDuration.ElapsedMilliseconds} ms"; + } + + DebugHelper.WriteLine(text); + } + } + } + private static void task_TaskCompleted(WorkerTask task) { try @@ -318,7 +341,7 @@ private static void task_TaskCompleted(WorkerTask task) } else { - DebugHelper.WriteLine($"Task completed. Filename: {info.FileName}, URL: {info.Result}, Duration: {info.TaskDuration.TotalMilliseconds:d} ms"); + DebugHelper.WriteLine($"Task completed. Filename: {info.FileName}, Duration: {(long)info.TaskDuration.TotalMilliseconds} ms"); string result = info.Result.ToString(); diff --git a/ShareX/WorkerTask.cs b/ShareX/WorkerTask.cs index 5f7f34efe..6256bc1ff 100644 --- a/ShareX/WorkerTask.cs +++ b/ShareX/WorkerTask.cs @@ -28,6 +28,7 @@ You should have received a copy of the GNU General Public License using ShareX.UploadersLib; using ShareX.UploadersLib.OtherServices; using System; +using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; @@ -46,6 +47,7 @@ public class WorkerTask : IDisposable public event TaskEventHandler StatusChanged; public event TaskEventHandler UploadStarted; public event TaskEventHandler UploadProgressChanged; + public event TaskEventHandler UploadCompleted; public event TaskEventHandler TaskCompleted; public event UploaderServiceEventHandler UploadersConfigWindowRequested; @@ -253,6 +255,8 @@ public void Start() { if (Status == TaskStatus.InQueue && !StopRequested) { + Info.TaskStartTime = DateTime.UtcNow; + threadWorker = new ThreadWorker(); Prepare(); threadWorker.DoWork += ThreadDoWork; @@ -302,8 +306,6 @@ public void Stop() private void ThreadDoWork() { - Info.TaskStartTime = DateTime.UtcNow; - CreateTaskReferenceHelper(); try @@ -343,8 +345,6 @@ private void ThreadDoWork() DoAfterUploadJobs(); } } - - Info.TaskEndTime = DateTime.UtcNow; } private void CreateTaskReferenceHelper() @@ -425,6 +425,11 @@ private void DoUploadJob() isError = DoUpload(retry); } } + + if (!isError) + { + OnUploadCompleted(); + } } else { @@ -851,7 +856,13 @@ public UploadResult UploadData(IGenericUploaderService service, Stream stream, s uploader.EarlyURLCopyRequested += url => ClipboardHelpers.CopyText(url); } - return uploader.Upload(stream, fileName); + Info.UploadDuration = Stopwatch.StartNew(); + + UploadResult result = uploader.Upload(stream, fileName); + + Info.UploadDuration.Stop(); + + return result; } return null; @@ -1023,6 +1034,14 @@ private void OnUploadStarted() } } + private void OnUploadCompleted() + { + if (UploadCompleted != null) + { + threadWorker.InvokeAsync(() => UploadCompleted(this)); + } + } + private void OnUploadProgressChanged() { if (UploadProgressChanged != null) @@ -1033,6 +1052,8 @@ private void OnUploadProgressChanged() private void OnTaskCompleted() { + Info.TaskEndTime = DateTime.UtcNow; + Status = TaskStatus.Completed; if (StopRequested)