Как можно заметить, классы имеют несколько свойств. В этой главе обсуждаются только два из них: свойство Name (Имя) и свойство Instancing (Экземпляр). Свойство Instancing определяет, где и как приложения могут использовать класс. Здесь обсуждаются его шесть возможных значений.
Private
Закрытые объекты доступны только компонентам из этого же приложения. При разработке класса, который не будет использоваться в других проектах или не нужно делать его доступным для других разработчиков, установите свойство Instancing в Private
SingleUse
Эта установка применима только к программным компонентам ActiveX EXE. Сервер ActiveX EXE — это исполняемый файл (приложение), который может обслуживать одного или более клиентов. Если свойство Instancing проекта сервера установлено в SingleUse, то для каждого клиента, который вызывает объекты класса, запускается новый экземпляр сервера. Такая установка является неэффективным методом создания и использования объектов, и ее обычно избегают. Если для каждого клиента нужен новый экземпляр сервера, то используется сервер, организованный в виде компонента ActiveX DLL.
MultiUse
Эта установка противоположна Private и может использоваться только с программными компонентами. Это позволяет одному экземпляру сервера обеспечивать столько объектов, сколько их требуется клиентским приложениям. По умолчанию в каждом вновь создаваемом проекте ActiveX EXE или ActiveX DLL свойство Instancing установлено в MultiUse.
GlobalSingleUse
Это значение создает глобальный объект со свойством SingleUse. Если вы собираетесь использовать глобальный объект, создайте его со значением SingleUse свойства Instancing, чтобы все клиенты, вызывающие его, могли быть обслужены одним сервером. Это свойство доступно как в компонентах ActiveX EXE, так и ActiveX DLL.
GlobalMultiUse
Эта установка доступна как в проектах ActiveX EXE так и ActiveX DLL, но ее следует использовать как можно реже. Объекты представленные компонентом со свойством GlobalMultiUse, доступны всей системе и могут использоваться любым приложением так, как если бы это были системные компоненты. Visual Basic предусматривает общесистемные объекты, называемые глобальными объектами. Например, объекты Screen (Экран) и Printer (Принтер) являются глобальными, поскольку не нужно добавлять на них ссылки в приложениях, которые их используют. Если имеется объект, о котором важно знать остальной части системы (а не только приложениям, которые его используют) то установите свойство Instancing в GlobalMultiUse.