E.T*_*.T. 13 c# multithreading devexpress process winforms
我有一个必须在UI线程上运行的长时间运行方法.(Devex - gridView.CopyToClipboard()
)
我不需要UI在复制时响应,我添加了一个启动画面,这样用户就不会觉得无聊了.
当我运行这个程序时一切都很好.
当我运行一个不同的程序时,麻烦就开始了,而这个程序又启动了一个新进程并在其上运行程序.复制几秒后标题读取(Not Responding)并且鼠标光标显示忙,它当然会在几秒钟内清除但我想摆脱它,因为它给用户误解了程序的感觉是有缺陷的.
有没有办法设置我创建的流程的"超时"?
编辑:
主程序调用以下代码:
fillsProcess = new Process();
fillsProcess.StartInfo.FileName = Application.ExecutablePath;
fillsProcess.Start();
Run Code Online (Sandbox Code Playgroud)
在fillsProcess中,当单击某个按钮时,将调用以下代码:
gridViewToCopy.CopyToClipboard();
Run Code Online (Sandbox Code Playgroud)
这行代码需要一段时间来处理,几秒钟后,fillsProcess的窗口看起来没有响应,因为此方法在UI线程上运行.
编辑第二名:
显然(并且非常可以理解)
gridViewToCopy.CopyToClipboard();
Run Code Online (Sandbox Code Playgroud)
不是导致此问题的唯一方法.许多Devex方法必须在UI线程上运行(例如,数据排序,数据过滤)
所以感谢任何提供特定解决方案的人(无论是否有效),但我原来的问题再次突然出现:
有没有办法改变超时时间或以某种方式控制整个"无响应"的惨败?
Moh*_*han 16
你可以使用DisableProcessWindowsGhosting
win32功能:
[DllImport("user32.dll")]
public static extern void DisableProcessWindowsGhosting();
Run Code Online (Sandbox Code Playgroud)
这实际上并不会阻止窗口冻结,但会阻止标题中的"Not Respongind"文本.