0
我写使用以高速率(每秒接近100包)从网络接收的日志数据SWT桌面应用程序。每个数据包包含一行必须附加到StyledText
。自从我接受非UI线程包,我要使用此代码:使用StyledText.append()从其他线程以高速
display.asyncExec(new Runnable() {
@Override
public void run() {
txtLog.append(log);
txtLog.setTopIndex(txtLog.getLineCount() - 1);
}
});
但这个代码使我的记录器太慢了,我的记录器的输出端不与发送者同步。例如我停止发送方设备和3分钟!,但是,Eclipse控制台输出(System.out.println()
)是完全同步与发送方后,我的节目日志输出停止,并停止在时间输出! eclipse setText()
它的StyledText
怎么样?
感谢您的回复。直到我今天登录后,我对这篇文章感到失望。关于'asyncExec()'你是对的。其实我在我的代码中使用了这个方法,而不是'syncExec()'。在这里打字我错了。在回答这个问题之前,我在我的应用程序中使用了一些缓冲区,并且日志文本与发件人(50fps)同步,但任务管理器永久显示我的应用程序的CPU使用率为16%。我怎么能解决它? – MHM
“日志文本与发件人同步(50fps)”?? –
缓冲后我的意思是,我使用的调度器来运行'asyncExec()'每20毫秒(50帧),并追加到缓冲部件。但reuslt是巨大的CPU使用! – MHM