Newsgroup: it.comp.lang.visual-basic
Titolo: Stanziare Activex in modo esclusivo

Buongiorno a tutti, io ho un programma che stanzia una classe di un
activex exe, e l'activex funziona in modo autonomo richiamando
anch'essa una sua classe per eseguire delle operazioni,mi chiedevo se
qualcuno sa se è possibile fare in modo che la classe instanziata dai
dua sia la stessa, magari impostando l'istancing della classe su
multiuse o qualcosa di simile.Grazie a tutti spero di essere stato
chiaro. Cece

 ha scritto nel messaggio
news:9903ddd4.04090...@posting.google.com...

Purtroppo non serve impostare Instancing = SingleUse, in quanto la creazione di
un'istanza della classe da parte del programma client manderebbe in esecuzione
una nuova istanza del server ActiveX exe, quindi un nuovo processo.
Quello che ci vuole è un cosiddetto Singleton, ossia una classe mono-istanza,
che non è direttamente creabile con VB6, ma che deve essere progettata seguendo
il relativo pattern (paradigma di programmazione).
In pratica bisogna poter "regolamentare" le creazioni di oggetti della classe
singleton e per poterlo fare in VB6 (in cui le classi non dispongono di un
metodo costruttore come in C++ ad esempio) occorre appoggiarsi ad un'altra
classe, detta "Factory" in quanto serve a "produrre" gli oggetti singleton.
Il client non potrà quindi creare direttamente un oggetto della classe singleton
(che avrà Instancing = Public not creatable), ma dovrà invocare un opportuno
metodo dalla classe Factory (che ad esempio potrebbe avere Instancing = Global
Multiuse).
Un esempio valido può essere scaricato da qui:
http://www.vb-helper.com/HowTo/snglton2.zip
Bye
Raf

 una nuova istanza del server ActiveX exe, quindi un nuovo processo.
Se il problema č condividere una classe tra piů processi l'unica č un
ActiveX-exe (le dll sono in-process, quindi ogni processo si carica il suo
codice).
E' molto piů semplice di quanto dici creare questa classe "singleton" (per
usare un termine .Net) con VB6.
Basta che all'interno dell'Ax-exe venga instanziata una classe in un oggetto
privato e venga resa pubblica questa singola instanza.
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 privato e venga resa pubblica questa singola instanza.
In effetti ha detto piu' o meno la stessa cosa... nell'esempio indicato e'
importante notare il fatto che la variabile oggetto relativa al singleto
deve essere dichiarata in un modulo BAS
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 Ciao
Non sono riuscito a risolvere il mio problema, comunque grazie mille delle info. 
Ciao

 delle info.
Prego... in ogni caso, se il tuo problema era cosi' come l'hai descritto, ti
assicuro che la soluzione, o comunque il nocciolo della stessa, era proprio
nel codice di esempio postato da Rafunk


 Ciao
Un ultima cosa, ho trovato che qlcuno utilizza una dll come specie di
appoggio per fare quello che serve a me, qlcuno di voi sa cosa si
intende?Ciao e grazie cmq.
Cece

 intende?Ciao e grazie cmq.
"qlcuno" chi? quale DLL?
Scusa se insisto ma, dato che nel primo messaggio dicevi di utilizzare gia'
un Exe ActiveX, che e' una condizione necessaria, il resto della soluzione
e' banale ed e' gia' tutto nelle risposte che ti hanno dato... non serve
assolutamente altro
