Se si esegue questo codice, ogni AppDomain
viene eseguito in un thread diverso?Do AppDomains esegue nei propri thread?
ThreadPool.QueueUserWorkItem(delegate
{
/// Create AppDomain and run code
});
Se si esegue questo codice, ogni AppDomain
viene eseguito in un thread diverso?Do AppDomains esegue nei propri thread?
ThreadPool.QueueUserWorkItem(delegate
{
/// Create AppDomain and run code
});
AppDomains non ottiene il proprio thread per impostazione predefinita. È possibile eseguire codice in un altro AppDomain utilizzando thread esistenti o chiamare un metodo in AppDomain, che crea nuovi thread. Infatti, a meno che non si creino in modo specifico thread aggiuntivi che chiamano codice in un altro dominio, verranno eseguiti sul thread principale del processo.
domini applicativi multipli possono essere eseguiti in un unico processo; tuttavia, c'è non una correlazione uno-a-uno tra domini e thread di applicazione . Fili possono appartenere a un singolo dominio applicativo , e mentre un dato filo non è limitata a un singolo dominio applicazione, in qualsiasi momento, un thread esegue in un singolo dominio applicazione.
Nell'esempio, si creano thread (o più specificamente il pool di thread lo fa) e quindi il codice verrà eseguito su questi thread. Tuttavia, non sono sicuro che consiglierei di creare AppDomain nei thread del pool di thread in questo modo.
Lo scaricamento di un AppDomain interromperà qualsiasi thread nell'AppDomain. Onestamente non so come reagirà il pool di thread. Ulteriori informazioni sullo scarico here.
Un dominio App è qualcosa di più grande di un thread, ma più piccolo di un processo. Potresti pensare a loro come a potenziali raccolte di diversi thread. Se un dominio app crea un nuovo dominio app, il nuovo dominio app avrà il proprio thread. Un thread in un dominio app non farà mai parte di un altro dominio app, né sarà consentito parlare direttamente ai thread da altri domini app.
Perché il downvote? –
_ "Se un dominio app crea un altro nuovo dominio app, il nuovo dominio app avrà il proprio thread." _. Mentre io non sono il downvoter, questa affermazione è un po 'oltre a quello che sta realmente accadendo. Quando crei un altro AppDomain, verrà eseguito nel thread corrente. Dovrai creare un nuovo thread in modo specifico e creare e avviare il nuovo AppDomain in quel thread, se vuoi eseguire l'AppDomain in una sua discussione. – Abel