【发布时间】:2013-02-12 06:15:34
【问题描述】:
我有一个长时间运行的方法,必须在 UI 线程上运行。 (Devex - gridView.CopyToClipboard())
我不需要 UI 在复制时做出响应,我添加了一个启动屏幕,这样用户就不会觉得无聊了。
当我运行这个程序时,一切都很好。
当我运行另一个程序时,问题就开始了,而该程序又启动了一个新进程并在其上运行该程序。 复制标题几秒钟后显示(未响应)并且鼠标光标显示忙碌,它当然会在几秒钟内清除但我想摆脱它,因为它给用户一种误解的感觉程序有问题。
有什么方法可以设置我创建的进程的“超时”吗?
编辑:
主程序调用如下代码:
fillsProcess = new Process();
fillsProcess.StartInfo.FileName = Application.ExecutablePath;
fillsProcess.Start();
在fillsProcess中,当点击某个按钮时,会调用以下代码:
gridViewToCopy.CopyToClipboard();
这行代码需要一些时间来处理,几秒钟后,fillsProcess 的窗口看起来没有响应,因为此方法在 UI 线程上运行..
编辑第二次:
显然(而且真的很容易理解)
gridViewToCopy.CopyToClipboard();
不是导致此问题的唯一方法。许多 Devex 方法必须在 UI 线程上运行(例如数据排序、数据过滤)
感谢任何提供特定解决方案(有效或无效)的人,但我原来的问题再次出现:
有什么办法可以改变超时时间或以某种方式控制整个“无响应”惨败?
【问题讨论】:
-
启动画面是不同的程序,当您开始复制时会启动?启动画面的标题?
-
这看起来很有用,更具体地说是 Jeffrey Hantin 的回答:stackoverflow.com/questions/1691251/…
-
您可能希望通过 Developer Express 解决此问题。
-
我可以设想 DevExpress 服务请求。问:“当我将一万行复制到剪贴板时,我的程序看起来坏了” 答:“你的程序坏了”。
-
Application.DoEvents()有什么作用吗?我知道它应该有效,但从来没有给我一致的结果。
标签: c# multithreading winforms process devexpress