diff --git a/lib/core/hwp_source.dart b/lib/core/hwp_source.dart index 35fb729..2a595e5 100644 --- a/lib/core/hwp_source.dart +++ b/lib/core/hwp_source.dart @@ -275,9 +275,11 @@ class HwpSource extends ReaderSource { _disposed = true; final open = [..._open.values]; _open.clear(); - // 만드는 중인 묶음은 기다리지 않는다 (몇 분 걸릴 수 있음) - 끝나면 닫힌다 ([_openChunk] 가 _disposed 를 본다) + // 다 연 묶음은 닫기를 기다리고 (열린 PDF 를 닫아야 임시 폴더를 지울 수 있다 - Windows 는 연 파일을 잡는다), + // 만드는 중인 묶음은 기다리지 않는다 (몇 분 걸릴 수 있음 - 끝나면 스스로 닫힌다, [_openChunk] 가 _disposed 를 본다) for (final f in open) { - unawaited(f.then((c) => c.dispose(), onError: (Object _) {})); + final closing = f.then((c) => c.dispose(), onError: (Object _) {}); + await Future.any([closing, Future.delayed(const Duration(milliseconds: 200))]); } doc.cancel(); // 바꾸는 중이면 다음 쪽에서 멈춘다 await doc.close(); // 멈춘 바꾸기가 끝난 뒤에 닫힌다 (엔진이 한 번에 하나씩)