c# – 在新进程中运行时的窗口标题中的“不响应”
发布时间:2020-12-15 03:45:21 所属栏目:百科 来源:网络整理
导读:我有一个长时间运行的方法,必须在UI线程上运行. (Devex – gridView.CopyToClipboard()) 我不需要UI来复制,而且我添加了一个启动屏幕,所以用户不感到无聊. 当我运行这个程序一切都很好. 当我运行一个不同的程序,然后启动一个新的进程并运行程序时,麻烦开始.
我有一个长时间运行的方法,必须在UI线程上运行. (Devex – gridView.CopyToClipboard())
我不需要UI来复制,而且我添加了一个启动屏幕,所以用户不感到无聊. 当我运行这个程序一切都很好. 当我运行一个不同的程序,然后启动一个新的进程并运行程序时,麻烦开始. 有没有办法设置我创建的过程的“超时”? 编辑: 主程序调用以下代码: fillsProcess = new Process(); fillsProcess.StartInfo.FileName = Application.ExecutablePath; fillsProcess.Start(); 在fillsProcess中,当点击某个按钮时,调用以下代码: gridViewToCopy.CopyToClipboard(); 这行代码需要一段时间才能处理,几秒钟后,fillsProcess的窗口看起来没有反应,因为该方法在UI线程上运行. 编辑第二: 显然(真的很可以理解) gridViewToCopy.CopyToClipboard(); 不是导致此问题的唯一方法.许多Devex方法必须在UI线程上运行(例如数据排序,数据过滤) 所以感谢任何提供具体解决方案的人(无论是工作还是没有),但我的原始问题再次弹出来: 有没有办法改变超时时间或以某种方式控制整个“不响应”的失败? 解决方法
您可以使用
DisableProcessWindowsGhosting win32功能:
[DllImport("user32.dll")] public static extern void DisableProcessWindowsGhosting(); 这实际上并不能防止窗口冻结,而是阻止标题中的“Not Respongind”文本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |