Skip to content

Commit

Permalink
Merge pull request #2 from fantakim/feature/async-support
Browse files Browse the repository at this point in the history
Fix action as async
  • Loading branch information
fantakim authored Jun 12, 2024
2 parents d3b5302 + 4abb169 commit bf169b0
Showing 1 changed file with 36 additions and 29 deletions.
65 changes: 36 additions & 29 deletions PapagoSrt/Form1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -183,6 +178,18 @@ private Dictionary<string, object> 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<string, object> backup)
{
Clipboard.Clear();
Expand Down

0 comments on commit bf169b0

Please sign in to comment.