Средства разработки приложений


Отображение библиотеки DDEML в .NET - часть 3


                 // Выполняем обработку транзакции

                                    ...

                 // Возвращаем управление

                 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 ссылка на функцию обратного вызова будет указывать на уничтоженный объект.


Начало  Назад  Вперед



Книжный магазин