我有一个 Winforms 应用程序,它部署在许多客户端站点上,并且运行没有问题。
我有一个站点(实际上一秒钟刚刚报告了它),其中应用程序将无缘无故地冻结。
我们通过小型转储获得的事件单堆栈跟踪显示 OnUserChanged 事件中的冻结...
ViewManager.RunApplication 是我调用的Application.Run(m_mainFrame.Form);地方,其中 m_mainForm 是我的主要应用程序表单。
我发现了很多关于这个的帖子和各种建议,例如自定义启动画面 - 我删除了这个 - 没有区别,订阅应用启动附近的 Microsoft.Win32.SystemEvents* 事件,如下所示
[STAThread]
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Thread.CurrentThread.Name = "My App";
// Empty handler to try and stop freeze
Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
Microsoft.Win32.SystemEvents.DisplaySettingsChanging += SystemEvents_DisplaySettingsChanging;
Microsoft.Win32.SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
// Must be called before first window creation:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
我试图在我得到的内存转储之一上关注这篇文章,但无法通过 Windbg 完成第二步
我放弃了这个,接下来按照这里的建议
我被允许访问有问题的客户端机器,当它冻结时,使用 spy++ 获得以下结果......
正如帖子中所建议的,我扩展了线程并寻找了第二个线程
我可以看到里面有两个带窗户的线程。查看我同时进行的内存转储,因此我可以匹配线程 ID),这两个线程都只是未命名的工作线程(我无法在窗口中看到主 UI 线程)
带有TabletPenServiceHelperClass 的那个看起来不寻常,我找不到太多关于它的信息。
有没有人对从这里去哪里有任何建议,或者TabletPenServiceHelperClass是什么,这与这些冻结有什么关系吗?这是一个令人沮丧的问题。
提前感谢您提供任何信息
牧羊人nacy
达令说
相关分类