8.х подключение к 1С по Com соединению

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем qwerty, 22 окт 2009.

  1. TopicStarter Overlay
    qwerty
    Offline

    qwerty

    Регистрация:
    15 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Код:
    static void Main(string[] args)
    {
    object v81Connect = null;
    object v81Base = null;
    Type v81Type;
    object[] connectargs = new object[1];
    connectargs[0] = "File=D:\DemoTrdBase; Usr=1C;Pwd=1C;";
    v81Type = Type.GetTypeFromProgID("v81.ComConnector");
    v81Connect = Activator.CreateInstance(v81Type);
    v81Base = v81Type.InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod, null, v81Connect, connectargs);
    Console.WriteLine("Connect ok");
    }
    
    При закрытии моего приложения выскакивает "Память не может быть read". Надо отключаться от базы как-то?
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Кажется надо. Посмотрите в диспетчере задач - остается ли процесс 1CV8.
  3. TopicStarter Overlay
    qwerty
    Offline

    qwerty

    Регистрация:
    15 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    В диспетчере точно не увижу, я ведь как Com-объект подгружаю.
  4. TopicStarter Overlay
    qwerty
    Offline

    qwerty

    Регистрация:
    15 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Не зря запостил вопрос, решение найдено)
    Вызываем
    System.Runtime.InteropServices.Marshal.ReleaseComObject для всех созданных объектов.

    static void Main(string[] args)
    {
    object v81Connect = null;
    object v81Base = null;
    Type v81Type;
    object[] connectargs = new object[1];
    connectargs[0] = @"File=D:\DemoTrdBase; Usr=1C;Pwd=1C;";
    v81Type = Type.GetTypeFromProgID("v81.ComConnector");
    v81Connect = Activator.CreateInstance(v81Type);
    v81Base = v81Type.InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod, null, v81Connect, connectargs);
    Console.WriteLine("Connect ok");
    System.Runtime.InteropServices.Marshal.ReleaseComObject(v81Base);
    }

Поделиться этой страницей