diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index 11b106d6..a50fed70 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -99,6 +99,9 @@ class BECConnector: self, QObject ), "BECConnector must be used with a QObject or any qt related class." + # flag to check if the object was destroyed and its cleanup was called + self._destroyed = False + # BEC related connections self.bec_dispatcher = BECDispatcher(client=client) self.client = self.bec_dispatcher.client if client is None else client @@ -173,7 +176,9 @@ class BECConnector: if not hasattr(self, "cleanup"): return try: - self.cleanup() + if not self._destroyed: + self.cleanup() + self._destroyed = True except Exception: content = traceback.format_exc() logger.info( diff --git a/bec_widgets/utils/bec_widget.py b/bec_widgets/utils/bec_widget.py index b7eb1916..35920c18 100644 --- a/bec_widgets/utils/bec_widget.py +++ b/bec_widgets/utils/bec_widget.py @@ -112,6 +112,8 @@ class BECWidget(BECConnector): def closeEvent(self, event): """Wrap the close even to ensure the rpc_register is cleaned up.""" try: - self.cleanup() + if not self._destroyed: + self.cleanup() + self._destroyed = True finally: super().closeEvent(event) # pylint: disable=no-member