Сделайте попытку/выгоду: если исключение - то, что транзакция уже запустилась (на основе кода ошибки или сообщения строки, безотносительно), продолжить. Иначе выдайте исключение снова.
редко требуется для реализации Dispose, но часто есть веские причины для этого.
Если COM-объект представляет собой значительный ресурс, который необходимо освободить быстро тогда это может быть хорошей причиной для реализации Dispose.
В своем методе dispose вы можете: -
System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);
Следовательно, удаление вашего класса немедленно освободит COM-объект.