diff --git a/Web/Core/vtkDataEncoder.cxx b/Web/Core/vtkDataEncoder.cxx
index 4e75813907eac4226ecf8a0021f5e72e7c3fa8dd..b6bedb61f581280e7fc0d0b8e66ee73543e242dd 100644
--- a/Web/Core/vtkDataEncoder.cxx
+++ b/Web/Core/vtkDataEncoder.cxx
@@ -88,9 +88,18 @@ class vtkWorkQueue
       vtkWork work;
       {
         std::unique_lock<std::mutex> lock(self->QueueMutex);
-        self->QueueCondition.wait(
-          lock, [self]() { return !self->Queue.empty() || self->Terminate; });
-        if (self->Terminate)
+        bool break_loop = false;
+        do
+        {
+          self->QueueCondition.wait_for(lock, std::chrono::seconds(1),
+            [self]() { return !self->Queue.empty() || self->Terminate; });
+          if (self->Terminate)
+          {
+            break_loop = true;
+            break;
+          }
+        } while (self->Queue.empty());
+        if (break_loop)
         {
           break;
         }