我目前正在使用NHunspell在WPF中实施自定义拼写检查,因为.Net Framework的原生解决方案并不适合我的需求。但是我在检查大文本中的单词时遇到了麻烦,例如带有10个pargraph的Lorem Ipsum,因为我需要检查每个单词,看看它是否包含在Hunspell使用的字典中,如果没有,我需要强调那个词。
我有这个当前的方法,每当KeyUp是退格键或空格键时检查所有文本。
ctype
但是,我认为我需要一个异步解决方案,因此它不会阻止我的主线程和用户输入。 - 理论上我考虑运行一个并行线程,如果用户在没有输入的情况下花费超过2秒,然后将选中的TextRange返回到我的RichTextBox(SpellCheckRichTextBox)。
有人可以建议任何解决方案,以便在处理大文本时我可以减慢验证速度吗?我真的坚持这一点,任何帮助都会受到赞赏。 提前谢谢!
答案 0 :(得分:1)
第一项改进将是
zzz.AsParallel().Where(x => _viewModel.MisspelledWords.Contains(x)).ToList();
这显然假设您的.MisspelledWords.Contains(x)
是可以并行完成的事情。它可能已经是ConcurrentDictionary。
你拥有拼写错误的单词集合的事实让我相信你已经解析了一次文本。那么为什么要解析两次呢?为什么不能将这些与通行证相结合?这将是另一种可能的优化。
是的,当用户停止输入时,在另一个线程中执行所有这些操作会更好。