Вход | Регистрация
 

События COM объекта на C#

События COM объекта на C#
Я
   ДНН
 
31.03.21 - 10:09
Пишу простой COM-сервер на C#. В 1С COM-объект создается без проблем, обычные методы вызываются.
Но мне нужно сделать событие, которое я смогу подключить через Добавитьобработчик в 1С и 1С бы реагировало на него.

Для этого сначала делаю простой пример, чтобы понять как все это работает.

Добавил вот такой интерфейс:
[Guid("7E290D1A-DE2A-4D73-9B87-9F24E72B2AB9"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyEvents
{
    [DispId(1)]
    void Sob();
}

У класса добавил делегат и событие:
public delegate void Sob_Delegate();
public event Sob_Delegate Sob;

добавил метод для делегата:
public void Test()
    {
    }

Создаю делегат и вызываю его:
Sob_Delegate Sob = Test;
Sob();

Когда в 1С вызываю Добавитьобработчик МойОбъект.Sob, ОбработчикСобытия;
То выходит ошибка "Событие объекта не обнаружено (Sob)".

Как это правильно делается? Может где-то есть пример?
   Dmitry1c
 
1 - 31.03.21 - 10:22
Зачем вам этот старый COM...

На C# же вполне себе в т.ч. windows-сервисы можно запилить
   ДНН
 
2 - 31.03.21 - 10:26
(1) "windows-сервисы можно запилить" - я думаю с этим будет еще больше проблем, с COM у меня хотя бы пример есть, только примера с событиями нет.
   Garykom
 
3 - 31.03.21 - 10:29
(0) пример обычной COM ВК есть на мисте с древних времен
Книга знаний: Написание внешних компонент для 1С на VB.NET и C#
   ДНН
 
4 - 31.03.21 - 10:35
(3) Это же немного не то. Это внешняя компонента 1С по технологии COM. А у меня обычный COM-компонент.
Просто мне кажется, что добавить событие это как-то очень просто. Чем переопределять все эти методы из API 1с
   acht
 
5 - 31.03.21 - 10:46
(0) [ComVisible(true)] кто будет вешать на твой IMyEvents ?
   acht
 
6 - 31.03.21 - 10:47
   ДНН
 
7 - 31.03.21 - 10:50
(5) Так у меня в AssemblyInfo.cs есть строка [assembly: ComVisible(true)]. Обычные методы же работают
   Garykom
 
8 - 31.03.21 - 10:51
(4) >добавить событие это как-то очень просто. Чем переопределять все эти методы из API 1с

обертка/шаблон один раз пишется а затем хоть задобавляйся

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.