Пишу приложение на c# которое использует com-сервер. com сервер добавил стандартно, через Add Reference, класс обёртка создался и нормально работает — методы вызываются, но когда я добавляю обработчик события com объекта, то этот объект почему-то эти обработчики не вызывает. Я уже несколько дней просматриваю интернет и форум, пробовал удалять [STAThread], пробовал ставить [MTAThread], это не помогло.
Вот небольшой код который, собственно, всё делает
private void button1_Click(object sender, EventArgs e)
{
SlotFaceClass slotFace =
new SlotFaceClass();
slotFace.Connected += new _ISlotFaceEvents_ConnectedEventHandler(slotFace_Connected);
string outMsg;
slotFace.Connect(
0,
"serv",
"logn",
"pwd",
out outMsg);
}
void slotFace_Connected(int OpenID, int SlotID, int ResultCode, string ResultMsg)
{
MessageBox.Show("Connected!");
}
Не вызывает события хоть как, в описании com-сервера говорится, что он многопоточный, есть для него пример клиента на vc++ который работает абсолютно нормально и события получает, помогите пожалуйста разобраться, подскажите направление, т.к. уже исчерпал все идеи, не знаю куда двигаться и что попробовать!
Большое спасибо за внимание!
Re: COM сервер не вызывает события
От:
Аноним
Дата:
02.07.09 05:32
Оценка:
Здравствуйте, Titov Andrew, Вы писали:
может сделать смешанный проект Native- Managed C++?
Здравствуйте, Titov Andrew, Вы писали:
TA>Не вызывает события хоть как, в описании com-сервера говорится, что он многопоточный, есть для него пример клиента на vc++ который работает абсолютно нормально и события получает, помогите пожалуйста разобраться, подскажите направление, т.к. уже исчерпал все идеи, не знаю куда двигаться и что попробовать!
Например, могут быть заморочки, если интерфейс event sink объявлен как dual. Смотрите внимательнее на то, как работает с++ клиент — что там происходит и как.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Вы не могли бы показать библиотеку типов сервера в IDL, её можно получить с помощью OleWiev.exe, например. Также на всякий случай уточните, сервер локальный, то есть в виде EXE?