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

         

Все остальные транзакции мы не


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

                                    ...

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

                 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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий