Marshal.ReleaseComObject()
нужно вызывать явно — в том же самом потоке (thread), где мы получили этот COM-объект.
GC работает в другом потоке. Там вызывать нельзя. Поэтому деструктор придется убрать.
Я использую конструкцию using — код остается читабельным.
using (var conn = new Object1C(connectorInstance.Connect(ConnectionArgs.ToString())))
{
// Делаем необходимую работу
}
P.S. Не забывайте также освобождать любые 1С-объекты, полученные вами через это COM-соединение. Методика та же.