3

我们有一个 SWT 应用程序,它在按下按钮时进行耗时的计算,然后打开一个新窗口。计算是在 UI 线程中完成的(这不是很好,但它是一个遗留应用程序),因此在操作期间窗口被冻结。通常在作业完成后,新窗口会正确重绘。但是,如果应用程序在 Windows 7 上运行,并且我使用 Windows 远程桌面连接到该计算机,则在完成操作后,新窗口有时无法正确绘制。当我执行以下操作时会发生这种情况:

  • 按下计算按钮
  • 切换到与我的应用程序重叠的另一个窗口
  • 切换回我的应用程序(仍然没有响应)
  • 等待计算完成。
  • 新窗口打开,但内容未正确绘制。

最小化和恢复窗口后,重新绘制正确完成。

一种解决方案是在远程桌面设置中设置最大详细信息。但这需要太多带宽。

我使用 SWT 版本 3.4.1、3.6.1 和 4.2.1 以及来自 XP->Windows 7 以及 Windows 7->Windows 7 的远程连接进行了测试。

在此处输入图像描述

4

2 回答 2

0

尝试使用paintListener、layout 或redraw,并且您必须知道将重绘放在图形线程中是一个好习惯(我的意思是SWT 应用程序的主循环)。

于 2012-12-03T12:27:16.860 回答
0

我发现什么解决了我的问题:

在打开新窗口后,shell.open()我添加了一个shell.redraw(). 本来可以早点想到的 ;-)

布拉

谢谢!

编辑:

不幸的是,这并不是在所有情况下都能奏效。仅当我在标题栏显示文本“(未响应)”之前切换回我的应用程序时,它才有效。当标题栏中已指示“(未响应)”时切换回来,行为与以前一样。

于 2012-12-03T15:46:46.347 回答