C#学习教程:使用文本框和自定义词典进行拼写会降低我在C#WPF中的应用程序的速度每次我创建一个时,我都会加载与CustomDictionary相同的文件。一切都很好,直到最近。现在,它们需要很长时间才能加载,最多一秒钟。有些桌子有30个或更多,这意味着将近半分钟的延迟。这似乎是Windows10的情况(不是我最初发布的Windows8)。该应用程序在DotNet4.0下运行,我试过4.5和4.6(不是4.61),所有版本都很慢。我在Win10中看到了sfaust的问题拼写检查文本框-慢和am7zd的答案。多亏了这些,我查看了HKEY_CURRENT_USERSoftwareMicrosoftSpellingDictionaries中的GLOBAL注册表项。我有580个条目(修剪掉没有匹配文件的条目),它仍然很慢。目前,每次创建TextBox并向其添加自定义词典时,它似乎都会在_GLOBAL_中生成一个新条目。欢迎提供任何建议。没有其他人的答案,所以这就是我所做的:在关闭它们所在的表单之前,我确保在所有带有自定义词典的文本框上使用CustomDictionaries.Remove。这消除了_GLOBAL_中的新条目和AppDataLocal中的相关文件温度。但有时会出现问题,或者用户只是结束任务,留下_GLOBAL_条目和.dic文件,所以:我决定更进一步。当我启动我的应用程序时,我不仅清除了_GLOBAL_中没有匹配文件的条目(如上面引用的上一篇文章中所述),而且我还删除了AppDataLocalTemp中引用.dic文件的所有条目。我的理论是,无论是谁在此处留下条目都不是故意的,或者他们可能将.dic文件保存在不同的文件夹中(就像MicrosoftOffice所做的那样)。尝试{string[]allDictionaries=(string[])Registry.GetValue(@"HKEY_CURRENT_USERSoftwareMicrosoftSpellingDictionaries","_Global_",newstring[0]);if(allDictionaries.Count()>0){列表realDictionaries=newList();boolchangedSomething=false;foreach(stringthisDinallDictionaries){if(File.Exists(thisD)){if(thisD.Contains(@"AppDataLocalTemp")){//假设任何想要保留永久.dic文件的人都不会将其存储在AppDataLocalTemp//所以删除该文件,不要将词典名称复制到好词典列表中。文件.删除(thisD);changedSomething=true;}else{realDictionaries.Add(thisD);}}else{//文件不存在,所以不要将字典名复制到好字典列表中。changedSomething=true;}}if(changedSomething){Registry.SetValue(@"HKEY_CURRENT_USERSoftwareMicrosoftSpellingDictionaries","_Global_",realDictionaries.ToArray());}}}赶上(异常前){MessageBox.Show(this,"Errorclearingupolddictionaryfiles.nnFullmessage:nn"+ex.Message,"无法删除文件",MessageBoxButtons.OK,MessageBoxIcon.Warning);我仍然想知道清除_GLOBAL_AppDataLocalTemp中引用文件的条目是否完全安全当然人们不应该将重要的东西放在临时文件夹中......不是吗?真正好的是CustomDictionaries.Add的重载,它允许我们设置.dic文件的名称和文件夹,允许同一应用程序中的所有文本框共享相同的.dic文件,并确保我们不不要留下一堆冗余的条目和文件,这些条目和文件的名称看似随机。首先请微软。以上就是C#学习教程:用文本框和自定义词典拼写会减慢我在C#WPF中的应用速度的所有内容分享,如果对大家有用需要进一步了解C#学习教程,希望大家A多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
