From 0a11c14ce8a6e69bdc396bd73970876db92438fc Mon Sep 17 00:00:00 2001 From: zggsong Date: Tue, 7 Jan 2025 15:10:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=9C=A8=E7=AD=89=E5=BE=85=E7=BF=BB=E8=AF=91=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=97=B6=E4=BF=AE=E6=94=B9=E5=86=85=E5=AE=B9=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=87=BA=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/STranslate.Style/Converters/DictConverters.cs | 1 - src/STranslate/ViewModels/InputViewModel.cs | 8 +++++--- src/STranslate/ViewModels/OutputViewModel.cs | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/STranslate.Style/Converters/DictConverters.cs b/src/STranslate.Style/Converters/DictConverters.cs index 912e13db..dc7835fb 100644 --- a/src/STranslate.Style/Converters/DictConverters.cs +++ b/src/STranslate.Style/Converters/DictConverters.cs @@ -10,7 +10,6 @@ public class DictConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { - Debug.WriteLine(value); if (value is not string str || string.IsNullOrEmpty(str) || !int.TryParse(parameter?.ToString(), out var index)) return value; var array = str.Split(Environment.NewLine).Where(x => !string.IsNullOrEmpty(x)).Select(x => x.Trim()).ToArray(); diff --git a/src/STranslate/ViewModels/InputViewModel.cs b/src/STranslate/ViewModels/InputViewModel.cs index f0f24a29..3421ad3f 100644 --- a/src/STranslate/ViewModels/InputViewModel.cs +++ b/src/STranslate/ViewModels/InputViewModel.cs @@ -154,6 +154,8 @@ private async void AutoTranslate(object? _) private async Task TranslateAsync(object? obj, CancellationToken token) { CanTranslate = false; + // 避免用户在等待翻译结果时修改内容存数据库出错 + var currentContent = InputContent; try { @@ -171,7 +173,7 @@ private async Task TranslateAsync(object? obj, CancellationToken token) var history = await DoTranslateAsync(obj, size, token); // 正常进行则记录历史记录,如果出现异常(eg. 取消任务)则不记录 - await PostTranslateAsync(history, sourceLang, targetLang, size); + await PostTranslateAsync(history, currentContent, sourceLang, targetLang, size); } catch (OperationCanceledException) { @@ -539,7 +541,7 @@ await service.TranslateAsync( #region 翻译后操作 - private async Task PostTranslateAsync(HistoryModel? history, LangEnum source, LangEnum dbTarget, + private async Task PostTranslateAsync(HistoryModel? history, string content, LangEnum source, LangEnum dbTarget, long size) { if (history is null && size > 0) @@ -553,7 +555,7 @@ private async Task PostTranslateAsync(HistoryModel? history, LangEnum source, La Time = DateTime.Now, SourceLang = source.GetDescription(), TargetLang = dbTarget.GetDescription(), - SourceText = InputContent, + SourceText = content, Data = JsonConvert.SerializeObject(enableServices, jsonSerializerSettings) }; //翻译结果插入数据库 diff --git a/src/STranslate/ViewModels/OutputViewModel.cs b/src/STranslate/ViewModels/OutputViewModel.cs index 4d48693d..7694e6e3 100644 --- a/src/STranslate/ViewModels/OutputViewModel.cs +++ b/src/STranslate/ViewModels/OutputViewModel.cs @@ -237,8 +237,8 @@ private async Task HotkeyTtsAsync(string param) public void Clear() { - foreach (var service in Translators) - TranslationResult.CopyFrom(TranslationResult.Reset, service.Data); + Parallel.ForEach(Translators, (service) => + TranslationResult.CopyFrom(TranslationResult.Reset, service.Data)); } [RelayCommand]