当前位置:  开发笔记 > 编程语言 > 正文

在Win10中拼写检查文本框 - 慢

如何解决《在Win10中拼写检查文本框-慢》经验,为你挑选了1个好方法。

我在WPF中使用内置的拼写检查程序.它工作得很好,直到我让用户开始升级到Windows 10 ...我认为问题在于它被用于许多小文本框.我的应用程序提供了一个网格(Telerik的TreeListView),其中包含我想要拼写检查的其中一列的文本框.我需要能够为拼写检查器提供自定义词典; 我能够做到这一点的唯一方法是订阅文本框加载的事件并添加路径,如下所示:

        TextBox tb = sender as TextBox;
        tb.ContextMenu = ctx_Spell;
        IList dcts = SpellCheck.GetCustomDictionaries(tb);

        dictsList.Add(dcts);
        if (KMApplication.Settings.UserDictionary != null)
        { dcts.Add(KMApplication.Settings.UserDictionary); }

        foreach (Uri dct in KMApplication.Settings.RevitDictonaries)
        { dcts.Add(dct); }

当然,这称为每个文本框的添加,这看起来非常浪费,但它似乎工作得很好,几乎没有明显的滞后,只有加载.但是现在在Windows 10上似乎是一个荒谬的滞后.在我的Windows 8.1机器上,我加载了几千行的文件,它出现在大约3或4秒内; 在我的Windows 10盒子上,它出现在大约10-15分钟.如果我注释掉上面代码的自定义词典部分,那么它在任一台机器上都会恢复大约3-4秒.

有谁知道更好的方法吗?或者如果在Win10中有某种方法?



1> 小智..:

我们遇到了类似的问题,并且通过避免在加载期间在每个TextBox控件上重新注册自定义词典来提高性能.

不幸的是,我们遇到了处理自定义词典的方式的另一个问题,如果你甚至有少量的TextBox控件,也会导致非常长的加载时间.

当WPF应用程序在Windows 8.1/10上的.NET 4.6.1中注册自定义词典时,会在%localappdata%\ Temp中创建一个临时词典文件,并在注册表项"Computer\HKEY_CURRENT_USER"中的多字符串值_GLOBAL_中注册软件\微软\拼写\字典".

如果_GLOBAL_值最终引用不存在的字典文件,则只要初始化启用了拼写检查的控件,应用程序就会开始显示非常慢的加载.

这可以通过使用Visual Studio中的"停止调试"按钮然后在经过足够的时间运行磁盘清理或CCleaner来删除临时字典文件后发生.

我们设法通过清除任何不存在的字典文件的链接的_GLOBAL_值来解决这个问题.我们的应用程序开始按预期工作.

我们提出了以下连接错误:https: //connect.microsoft.com/VisualStudio/feedback/details/2153484

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有