В случае, если вы находитесь в деструкторе из-за разматывания стека в обработчике исключений, я предлагаю перестроить ваш код таким образом, чтобы вы перехватывали исключения внутри сериализованного блока.
После блока вы проверяете, является ли объект все еще действительным, и вызываете ваш метод. Таким образом, исключение в одном потоке позволит другим потокам корректно обрабатывать вызов деструктора.