Esempio n. 1
0
 // Удаление контр. элем.
 protected override void Dispose(bool disposing)
 {
     if (graphicsDeviceService != null)
     {
         graphicsDeviceService.Release(disposing);
         graphicsDeviceService = null;
     }
     base.Dispose(disposing);
 }
Esempio n. 2
0
 // Получаем ссылку на синглетонный экземпляр.
 public static ScannerService AddRef(IntPtr windowHandle,
                                            int width, int height)
 {
     // Увеличиваем значение счётчика контр. элем., использующих устройство.
     if (Interlocked.Increment(ref referenceCount) == 1) // Потокобезопасное наращение счётчика по ссылке.
     {
         // Если это первый контр. элем., то для начала использования устройства
         // мы должны создать синглетонный экземпляр.
         singletonInstance = new ScannerService(windowHandle,
                                                       width, height);
     }
     return singletonInstance;
 }
Esempio n. 3
0
 // Инициализация контр. элем.
 protected override void OnCreateControl()
 {
     // Не инициализируем графическое устройство если мы запущены в редакторе.
     if (!DesignMode)
     {
         graphicsDeviceService = ScannerService.AddRef(Handle,
                                                              ClientSize.Width,
                                                              ClientSize.Height);
         // Регистрируем службу, теперь компоненты типа ContentManager могут найти её.
         services.AddService<IGraphicsDeviceService>(graphicsDeviceService);
         // Даём производным классам шанс инициализировать себя.
         Initialize();
     }
     base.OnCreateControl();
 }