From 4abb169d3cb1aeae2502c4e128dc674d52e31993 Mon Sep 17 00:00:00 2001 From: Fanta Kim Date: Wed, 12 Jun 2024 23:56:56 +0900 Subject: [PATCH] Fix action as async --- PapagoSrt/Form1.cs | 65 +++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/PapagoSrt/Form1.cs b/PapagoSrt/Form1.cs index 77fb930..30b7939 100644 --- a/PapagoSrt/Form1.cs +++ b/PapagoSrt/Form1.cs @@ -71,7 +71,7 @@ private void btnOpenFolder_Click(object sender, EventArgs e) } } - private void btnStart_Click(object sender, EventArgs e) + private async void btnStart_Click(object sender, EventArgs e) { var folder = txtFolder.Text; var isSameFolder = cbxSameFolder.Checked; @@ -86,43 +86,38 @@ private void btnStart_Click(object sender, EventArgs e) if (pendingTasks.Count == 0) return; - var driver = Papago.CreateChromeDriver(); - var backup = BackupClipboard(); - btnStart.Enabled = false; - try + var backup = BackupClipboard(); + using (var driver = Papago.CreateChromeDriver()) { - foreach (var task in pendingTasks) + await System.Threading.Tasks.Task.Run(() => { - var content = File.ReadAllText(task.Filename); - Clipboard.SetText(content); - - var translated = Papago.Translate(driver); - if (translated.Length == 0) + foreach (var task in pendingTasks) { - task.SetStatus(TaskStatus.Failure); - continue; - } + var content = File.ReadAllText(task.Filename); - var saveFilename = isSameFolder ? AddSuffixToFileName(task.Filename, "-kr") : Path.Combine(folder, Path.GetFileName(task.Filename)); - File.WriteAllText(saveFilename, translated); + SetTextClipboard(content); - task.SetStatus(TaskStatus.Success); - } + var translated = Papago.Translate(driver); + if (translated.Length == 0) + { + task.SetStatus(TaskStatus.Failure); + continue; + } - MessageBox.Show("ÀÛ¾÷ÀÌ ¿Ï·á µÇ¾ú½À´Ï´Ù", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - driver.Close(); - RestoreClipboard(backup); - btnStart.Enabled = true; + var saveFilename = isSameFolder ? AddSuffixToFileName(task.Filename, "-kr") : Path.Combine(folder, Path.GetFileName(task.Filename)); + File.WriteAllText(saveFilename, translated); + + task.SetStatus(TaskStatus.Success); + } + }); } + + RestoreClipboard(backup); + MessageBox.Show("ÀÛ¾÷ÀÌ ¿Ï·á µÇ¾ú½À´Ï´Ù", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + + btnStart.Enabled = true; } private string previousFolderText; @@ -183,6 +178,18 @@ private Dictionary BackupClipboard() return backup; } + private void SetTextClipboard(string text) + { + var thread = new Thread(new ThreadStart(() => + { + Clipboard.SetText(text); + })); + + thread.SetApartmentState(ApartmentState.STA); + thread.Start(); + thread.Join(); + } + private void RestoreClipboard(Dictionary backup) { Clipboard.Clear();