加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在新进程中运行时的窗口标题中的“不响应”

发布时间:2020-12-15 03:45:21 所属栏目:百科 来源:网络整理
导读:我有一个长时间运行的方法,必须在UI线程上运行. (Devex – gridView.CopyToClipboard()) 我不需要UI来复制,而且我添加了一个启动屏幕,所以用户不感到无聊. 当我运行这个程序一切都很好. 当我运行一个不同的程序,然后启动一个新的进程并运行程序时,麻烦开始.
我有一个长时间运行的方法,必须在UI线程上运行. (Devex – gridView.CopyToClipboard())

我不需要UI来复制,而且我添加了一个启动屏幕,所以用户不感到无聊.

当我运行这个程序一切都很好.

当我运行一个不同的程序,然后启动一个新的进程并运行程序时,麻烦开始.
经过几秒钟的复制,标题读取(Not Responding),鼠标光标显示繁忙,它当然会在几秒钟内清除,但是我想摆脱它,因为它给用户一个误解的感觉,程序是错误的.

有没有办法设置我创建的过程的“超时”?

编辑:

主程序调用以下代码:

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”文本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读