diff --git a/ShareX/Forms/ActionsToolbarForm.cs b/ShareX/Forms/ActionsToolbarForm.cs index c06c76bb4..c1fc25ced 100644 --- a/ShareX/Forms/ActionsToolbarForm.cs +++ b/ShareX/Forms/ActionsToolbarForm.cs @@ -327,14 +327,14 @@ private void UpdateToolbar(List actions) Image = TaskHelpers.FindMenuIcon(action) }; - tsb.Click += (sender, e) => + tsb.Click += async (sender, e) => { if (Program.Settings.ActionsToolbarStayTopMost) { TopMost = false; } - TaskHelpers.ExecuteJob(action); + await TaskHelpers.ExecuteJob(action); if (Program.Settings.ActionsToolbarStayTopMost) { diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 2be3def3c..8ad829b73 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -54,7 +54,7 @@ public MainForm() InitializeControls(); } - private void MainForm_HandleCreated(object sender, EventArgs e) + private async void MainForm_HandleCreated(object sender, EventArgs e) { RunPuushTasks(); @@ -63,7 +63,7 @@ private void MainForm_HandleCreated(object sender, EventArgs e) DebugHelper.WriteLine("Startup time: {0} ms", Program.StartTimer.ElapsedMilliseconds); - Program.CLI.UseCommandLineArgs(); + await Program.CLI.UseCommandLineArgs(); if (Program.Settings.ActionsToolbarRunAtStartup) { @@ -350,11 +350,11 @@ private void InitHotkeys() }); } - private void HandleHotkeys(HotkeySettings hotkeySetting) + private async void HandleHotkeys(HotkeySettings hotkeySetting) { DebugHelper.WriteLine("Hotkey triggered. " + hotkeySetting); - TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); + await TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); } private void UpdateWorkflowsMenu() @@ -436,7 +436,7 @@ private ToolStripMenuItem WorkflowMenuItem(HotkeySettings hotkeySetting) { tsmi.Font = new Font(tsmi.Font, FontStyle.Bold); } - tsmi.Click += (sender, e) => TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); + tsmi.Click += async (sender, e) => await TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); return tsmi; } @@ -1947,13 +1947,13 @@ private void tsbAbout_Click(object sender, EventArgs e) #region Tray events - private void niTray_MouseUp(object sender, MouseEventArgs e) + private async void niTray_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (Program.Settings.TrayLeftDoubleClickAction == HotkeyType.None) { - TaskHelpers.ExecuteJob(Program.Settings.TrayLeftClickAction); + await TaskHelpers.ExecuteJob(Program.Settings.TrayLeftClickAction); } else { @@ -1969,24 +1969,24 @@ private void niTray_MouseUp(object sender, MouseEventArgs e) trayClickCount = 0; timerTraySingleClick.Stop(); - TaskHelpers.ExecuteJob(Program.Settings.TrayLeftDoubleClickAction); + await TaskHelpers.ExecuteJob(Program.Settings.TrayLeftDoubleClickAction); } } } else if (e.Button == MouseButtons.Middle) { - TaskHelpers.ExecuteJob(Program.Settings.TrayMiddleClickAction); + await TaskHelpers.ExecuteJob(Program.Settings.TrayMiddleClickAction); } } - private void timerTraySingleClick_Tick(object sender, EventArgs e) + private async void timerTraySingleClick_Tick(object sender, EventArgs e) { if (trayClickCount == 1) { trayClickCount = 0; timerTraySingleClick.Stop(); - TaskHelpers.ExecuteJob(Program.Settings.TrayLeftClickAction); + await TaskHelpers.ExecuteJob(Program.Settings.TrayLeftClickAction); } } diff --git a/ShareX/Program.cs b/ShareX/Program.cs index c29830cbd..a64c4f3e6 100644 --- a/ShareX/Program.cs +++ b/ShareX/Program.cs @@ -32,6 +32,7 @@ using System.IO; using System.Text; using System.Threading; +using System.Threading.Tasks; using System.Windows.Forms; #if MicrosoftStore @@ -394,7 +395,10 @@ private static void SingleInstanceCallback(object sender, InstanceCallbackEventA { if (WaitFormLoad(5000)) { - MainForm.InvokeSafe(() => UseCommandLineArgs(args.CommandLineArgs)); + MainForm.InvokeSafe(async () => + { + await UseCommandLineArgs(args.CommandLineArgs); + }); } } @@ -412,7 +416,7 @@ private static bool WaitFormLoad(int wait) return false; } - private static void UseCommandLineArgs(string[] args) + private static async Task UseCommandLineArgs(string[] args) { if (args == null || args.Length < 1) { @@ -433,7 +437,7 @@ private static void UseCommandLineArgs(string[] args) CLIManager cli = new CLIManager(args); cli.ParseCommands(); - CLI.UseCommandLineArgs(cli.Commands); + await CLI.UseCommandLineArgs(cli.Commands); } private static void UpdatePersonalPath() diff --git a/ShareX/ShareXCLIManager.cs b/ShareX/ShareXCLIManager.cs index 0b1b06cd8..c08072d4c 100644 --- a/ShareX/ShareXCLIManager.cs +++ b/ShareX/ShareXCLIManager.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; namespace ShareX { @@ -36,12 +37,12 @@ public ShareXCLIManager(string[] arguments) : base(arguments) { } - public void UseCommandLineArgs() + public async Task UseCommandLineArgs() { - UseCommandLineArgs(Commands); + await UseCommandLineArgs(Commands); } - public void UseCommandLineArgs(List commands) + public async Task UseCommandLineArgs(List commands) { TaskSettings taskSettings = FindCLITask(commands); @@ -51,7 +52,7 @@ public void UseCommandLineArgs(List commands) if (command.IsCommand) { - if (CheckCustomUploader(command) || CheckImageEffect(command) || CheckCLIHotkey(command) || CheckCLIWorkflow(command) || + if (CheckCustomUploader(command) || CheckImageEffect(command) || await CheckCLIHotkey(command) || await CheckCLIWorkflow(command) || CheckNativeMessagingInput(command)) { } @@ -121,13 +122,14 @@ private bool CheckImageEffect(CLICommand command) return false; } - private bool CheckCLIHotkey(CLICommand command) + private async Task CheckCLIHotkey(CLICommand command) { foreach (HotkeyType job in Helpers.GetEnums()) { if (command.CheckCommand(job.ToString())) { - TaskHelpers.ExecuteJob(job, command); + await TaskHelpers.ExecuteJob(job, command); + return true; } } @@ -135,7 +137,7 @@ private bool CheckCLIHotkey(CLICommand command) return false; } - private bool CheckCLIWorkflow(CLICommand command) + private async Task CheckCLIWorkflow(CLICommand command) { if (Program.HotkeysConfig != null && command.CheckCommand("workflow") && !string.IsNullOrEmpty(command.Parameter)) { @@ -145,7 +147,8 @@ private bool CheckCLIWorkflow(CLICommand command) { if (command.Parameter == hotkeySetting.TaskSettings.ToString()) { - TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); + await TaskHelpers.ExecuteJob(hotkeySetting.TaskSettings); + return true; } } diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index b9727a264..eee2126e8 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -52,17 +52,17 @@ namespace ShareX { public static class TaskHelpers { - public static void ExecuteJob(HotkeyType job, CLICommand command = null) + public static async Task ExecuteJob(HotkeyType job, CLICommand command = null) { - ExecuteJob(Program.DefaultTaskSettings, job, command); + await ExecuteJob(Program.DefaultTaskSettings, job, command); } - public static void ExecuteJob(TaskSettings taskSettings) + public static async Task ExecuteJob(TaskSettings taskSettings) { - ExecuteJob(taskSettings, taskSettings.Job); + await ExecuteJob(taskSettings, taskSettings.Job); } - public static void ExecuteJob(TaskSettings taskSettings, HotkeyType job, CLICommand command = null) + public static async Task ExecuteJob(TaskSettings taskSettings, HotkeyType job, CLICommand command = null) { if (job == HotkeyType.None) return; @@ -224,7 +224,7 @@ public static void ExecuteJob(TaskSettings taskSettings, HotkeyType job, CLIComm OpenVideoThumbnailer(safeTaskSettings); break; case HotkeyType.OCR: - OCRImage(safeTaskSettings).GetAwaiter().GetResult(); + await OCRImage(safeTaskSettings); break; case HotkeyType.QRCode: OpenQRCode();