Все остальные транзакции мы не
// Выполняем обработку транзакции
...
// Возвращаем управление
return new IntPtr(DDEML.DDE_FACK);
}
// Все остальные транзакции мы не обрабатываем
return IntPtr.Zero;
}
// Идентификатор приложения
private uint idInst = 0;
public ExcelDDEHotConnection()
{
// Создаем делегат-переходник для функции обратного вызова
_DDECallBack = new DDECallBackDelegate(DDECallBack);
// Регистрация в библиотеке DDEML
DDEML.DdeInitialize(ref idInst, _DDECallBack, 0, 0);
// выполняем остальные инициализирующие действия
...
}
...
}
Прошу обратить внимание на то, что ссылку на делегат функции обратного вызова мы храним все время работы с DDEML. Если этого не сделать, то сборщик мусора .NET уничтожит этот делегат при очередной сборке мусора, что приведет к тому, что во внутренних структурах библиотеки DDEML ссылка на функцию обратного вызова будет указывать на уничтоженный объект.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий