Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите разобраться с подписками на события COM объекта / 3 сообщений из 3, страница 1 из 1
17.08.2013, 02:10
    #38369604
karlson85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с подписками на события COM объекта
Всех приветствую.

Сделал COM сервер, с возможностью подписки на одно событие, со следующим кодом:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace AsteriskNotifierCom
{

    [Guid("C9239D8C-68BB-4656-81FC-65AD038AFA04")]
    internal interface IAsteriskNotifierCOM
    {
        [DispId(1)]
        void message(string msg);
    }

    [Guid("65520F46-0CC6-4F4A-BDE2-D0527C0DBDB8"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IAsteriskNotifierCOMEvents
    {
        void OnOperationCompleted(string message);
    }

    [Guid("202802A2-8E85-4073-9A67-534EDE33D580"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IAsteriskNotifierCOMEvents))]
    public class AsteriskNotifierCOM : IAsteriskNotifierCOM
    {
        public void message(string msg)
        {
            MessageBox.Show(msg, "Это сообщение COM", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            for (int i=1;i<10;i++)
            {
                AsteriskNotifierComE Ev=new AsteriskNotifierComE();
                Ev.GenerateEvent(i);
            }
        }
    }
    [ComSourceInterfaces(typeof(IAsteriskNotifierCOMEvents))]
    public class AsteriskNotifierComE 
    {   
      
        [ComVisible(false)]
        public delegate void OperationCompletedDel(string message); //No need to expose this delegate
        public event OperationCompletedDel OnOperationCompleted;   
        public void GenerateEvent(int i)
        {
            this.OnOperationCompleted(i.ToString());
        }
    }

}



Теперь не могу понять как в клиенте правильно подписаться на это событие, делаю так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AsteriskNotifierCom.AsteriskNotifierCOM co = new AsteriskNotifierCom.AsteriskNotifierCOM();
            AsteriskNotifierCom.AsteriskNotifierComE ev = new AsteriskNotifierCom.AsteriskNotifierComE();
            ev.OnOperationCompleted += Form1_OnOperationCompleted;
            co.message("привет");
            

        }
        public void Form1_OnOperationCompleted(string msg)
        {
            MessageBox.Show(msg);
        }
    }
}



Но отрабатывает только вызов функции COM объекта, а вот обработка события не срабатывает, может кто подскажет что я делаю не так, в первый раз столкнулся с COM объектами?
...
Рейтинг: 0 / 0
18.08.2013, 00:20
    #38369905
karlson85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с подписками на события COM объекта
Причем вылетает ошибка NullReferenceException при генерации события, видимо все-таки в клиенте как-то неправильно подписываюсь на это событие?
...
Рейтинг: 0 / 0
18.08.2013, 00:25
    #38369906
karlson85
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с подписками на события COM объекта
Или может кто свой пример выложит, никак не могу разобраться?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите разобраться с подписками на события COM объекта / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]