Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] Attributo STAThread

Salve a tutti
ho un dubbio sull'utilizzo dell'attributo in oggetto.
- Dalla guida leggo:
Indica che il modello di threading predefinito per un'applicazione è di tipo
Apartment con thread singolo (STA, Single-Threaded Apartment).
- nelle Osservazioni aggiunge:
I modelli di threading riguardano soltanto applicazioni in cui si utilizza
l'interoperabilità COM. L'impiego di questo attributo in applicazioni in cui
l'interoperabilità COM non viene utilizzata non ha alcun effetto.
Devo concludere che se in un proggetto non utilizzo compenenti COM, non ha
senso l'utilizzo dell'attributo.
Presumo che l'utilizzo dell'attributo avverte il runtime che potrebbe essere
presente un componente COM, quindi se l'utilizzo e non inserisco un
componente COM carico il runtime di un lavoro inesistente.
Rimango dubbioso
grazie
giuseppeD

senso l'utilizzo dell'attributo.
Uhm, la guida dice anche:
If it is not set, then the thread is not initialized.
Quindi cosa significa questo? 
Decide lui? Ma come, se sembra non avere un default? 
Il problema penso potrebbe nascere da una eventuale chiamata a codice
unmanaged fatta durante lo sviluppo e non prevista o non conosciuta
all' inizio, che potrebbe inizializzare il modello di apartment su
Unknown. Non e' detto che l'oggetto COM chiamato in causa gradisca
tale modello (che dovrebbe essere una specie di multithreading).
Nel dubbio, considerando che COM in windows te lo ritrovi dappertutto,
io preferirei specificare sempre l'attributo: magari ci pensa il
compilatore a segnalare potenziali casini prima di andare in
produzione.
-- 
ciao, hal

 produzione.
- Ripeto la dicitura:
Se il modello non viene impostato, il thread non verrà inizializzato.
- aggiunge:
Applicare questo attributo al metodo Main di un'applicazione.
Se non uso l'attributo, secondo l'indicazione, non inizializzo il thread,
ma quando attivo l'applicazione, anche senza attributo, non inizio un thread
?
Salve
giuseppeD

?
Non _inizializzare_ non significa non _iniziare_.
Da come l'ho capita, non dovrebbero sussistere problemi se non si
accede a codice unmanaged che usi COM (ma come si fa ad essere sicuri
che sotto sotto non si usi mai COM? Se gratti dentro i sorgenti degli
assemblies del framework prima o poi trovi chiamate che passano per
COM).
E' un po' come dichiarare una variabile senza inizializzarla: se provi
ad usarla ti ci ritrovi dentro cio' che casualmente si trova in
memoria a quell'indirizzo. Nel caso del thread dell'applicazione .net
dovrebbe andare tutto bene finche' non si accede ad oggetti COM, per i
quali occorre specificare il modello di apartment (che non serve per
.net, il quale usa primitive di sincronizzazione come i mutex ed i
locks).
Il problema, imho, e':
come faccio ad essere sicuro che il mio codice non faccia mai chiamate
a librerie unmanaged?
-- 
ciao, hal

 o poi trovi chiamate che passano per  COM).
Una precisazione. Il fatto che il codice che poggia sul framework non usi
COM *non implica* che il Framework stesso non si appoggi a chiamate che
passano per COM, anzi! Naturalmente il fatto che il codice stesso non si
appoggi su COM lo rende portabile su altri sistemi dove il framework
interagisce col S.O. e l'hardware senza COM.
My 2 eurocent.
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

interagisce col S.O. e l'hardware senza COM.
In futuro, quando il framework su sistemi diversi da windows sara' ben
piu' delle embrionali implementazioni attuali, questo sara' certamente
vero e gia' da oggi sarebbe bene sforzarsi di sviluppare in modo da
non dipendere da oggetti COM, per lo meno incapsulandone il meglio
possibile le chiamate per favorirne successivi adattamenti alle
diverse piattaforme.
-- 
ciao, hal

 non dipendere da oggetti COM
Daccordo pienamente,
ad oggi l'unico collegamento con COM è stato per l'utilizzo di Excel e Word,
e con Word ho i famosi problemi presumo dipendenti "dall'inferno delle dll".
Spero che con Office 2003 un'altro pezzo di COM sparisca.
Un dubbio m'assale, una voce ascoltata alla SMAU e ancora non ho avuto tempo
di verificarla.
Crystal Reports per V.S. .NET poggia su COM ?
Salve
giuseppeD