Access 2002

Копия Excel


Для этого сначала нужно убедиться, что хоть одна копия Excel уже запущена. Затем, вместо того чтобы использовать ключевое слово New или функцию CreateObject, нужно в операторе Set вызвать функцию GetObject, как  10.4.

Хотя большинство однопользовательских классов может применяться в качестве многопользовательских, обратное не верно. Каждый раз, запрашивая новый экземпляр многопользовательского класса, вы получаете просто новую ссылку на уже существующий экземпляр (если таковой имеется). И только первый из этих запросов вызывает загрузку приложения.

В  10.2 перечислены приложения Microsoft Office ХР и указано, какие из них по умолчанию являются однопользовательскими, а какие — многопользовательскими.

Работая с несколькими ссылками на объекты сервера, вы должны быть в курсе процесса, называемого подсчетом ссылок (reference counting). Состоит он в следующем. Каждый раз, когда вы просите приложение-сервер создать для вас новый экземпляр его класса (неважно как, с помощью ключевого слова New, функции CreateObject или GetObject), сервер увеличивает значение своего внутреннего счетчика. Если вы уничтожаете ссылку на объект сервера, присвоив ей значение Nothing (или если переменная выходит за пределы области видимости вашего приложения), сервер уменьшает свой счетчик. При неаккуратной работе с многопользовательскими классами это может привести к проблемам.

Большинство серверов автоматизации, будучи запущенными клиентом, автоматически завершают свою работу, когда их внутренний счетчик ссылок оказывается равным нулю. Более того, некоторые из них не завершают работу до тех пор, пока счетчик ссылок не обнулится. Поэтому, создавая несколько ссылок на объекты одного серверного класса, будьте внимательны: не забывайте уничтожать все созданные ссылки перед завершением работы своего приложения.

Комментарии закрыты