4
나는 SwingWorker를 사용하여 TCP 연결을 통해 데이터를 읽고 돌아 왔을 때 표시합니다.Swingworker Timeout
new SwingWorker<EnvInfoProto, Void>() {
@Override
public EnvInfoProto doInBackground() {
try {
xxx.writeTo(socket.getOutputStream());
return ProtoMsg.parseFrom(socket.getInputStream());
} catch(IOException ignore) { }
return null;
}
@Override
public void done() {
try {
UpdateGui(get());
} catch (Exception ignore) {}
}
}.execute();
소켓이 작동하지 않을 때 문제가 발생합니다. writeTo 이후 소켓의 입력을 영원히 기다린다. 잠시 후 타임 아웃하는 가장 쉬운 방법은 무엇입니까? 이 경우에도 this이 최상의 솔루션입니까? 나는 그 해결책에 스윙 워커를 아직도 사용합니까?
SwingWorker<EnvInfoProto, Void> worker = new SwingWorker<EnvInfoProto, Void>() {
...
};
worker.execute();
worker.get(15, TimeUnit.SECONDS);
//will block 15 seconds at most, then throw TimeoutException
:
감사