我正在使用 SWT 编写一个桌面应用程序,它以高速(每秒近 100 个数据包)从网络接收日志数据。每个数据包都包含一行,必须附加到StyledText
. 由于我在非 UI 线程中接收数据包,因此我必须使用以下代码:
display.asyncExec(new Runnable() {
@Override
public void run() {
txtLog.append(log);
txtLog.setTopIndex(txtLog.getLineCount() - 1);
}
});
但是这段代码让我的 Logger 太慢了,而且我的 logger 的输出与 sender 不同步。例如,我停止了发送方设备,我的程序日志输出在 3 分钟后停止!!但是,eclipse 控制台输出(System.out.println()
)与发送方完全同步并按时停止输出!eclipsesetText()
是StyledText
怎么回事?