diff --git a/ophyd_devices/interfaces/base_classes/psi_device_base.py b/ophyd_devices/interfaces/base_classes/psi_device_base.py index 216cb64..07742f7 100644 --- a/ophyd_devices/interfaces/base_classes/psi_device_base.py +++ b/ophyd_devices/interfaces/base_classes/psi_device_base.py @@ -164,6 +164,7 @@ class PSIDeviceBase(Device): """Destroy the device.""" self.on_destroy() # Call the on_destroy method self._stop_stoppable_status_objects() + self.task_handler.shutdown() return super().destroy() ######################################## diff --git a/ophyd_devices/utils/psi_device_base_utils.py b/ophyd_devices/utils/psi_device_base_utils.py index 269e94e..97dde80 100644 --- a/ophyd_devices/utils/psi_device_base_utils.py +++ b/ophyd_devices/utils/psi_device_base_utils.py @@ -155,7 +155,7 @@ class TaskHandler: task_status.set_finished() finally: with self._lock: - self._tasks.pop(task_status.task_id) + self._tasks.pop(task_status.task_id, None) def kill_task(self, task_status: TaskStatus) -> None: """Kill the thread @@ -171,7 +171,7 @@ class TaskHandler: res = set_async_exc(ident, exc) if res == 0: raise ValueError("Invalid thread ID") - elif res > 1: + if res > 1: set_async_exc(ident, None) logger.warning(f"Exception raise while kille Thread {ident}; return value: {res}") except Exception as e: # pylint: disable=broad-except