目前我总是创建一个SwingWorker
来做我的实际工作,另一个通过PipedReader
.
我很想将两者结合起来,但在我的情况下,我只是看不到一个简单的方法。
鉴于我:
- 有一个可以工作的预制对象(
converter
在这种情况下) - 想要定期
converter
向 GUI 显示有关 的进度的更新 converter
完成任务并返回时接收对象。
没有两个 SwingWorker 有没有办法做到这一点?
编辑:请注意,converter
扩展SwingWorker
不是一种选择。
编辑2:回应下面的评论。这是一个更大的 GUI 应用程序的一部分,处理大量数据(以 txt 的形式)并通知用户什么是错误的,或者什么已经决定。
示例代码(纯说明性,未使用):
//SwingWorker 1
@Override
protected Void doInBackground() {
outputWorker.useInStream(new PipedReader(outStream));
outputWorker.execute();
converter.usePipedWriter(outStream);
Output object2=converter.Convert(object1);
}
//SwingWorker 2
@Override
protected Void doInBackground() {
while(inStream.hasNext()) {
publish(inStream.next());
}
}