Domanda

Sto usando un oggetto COM STA da un thread terra posteriore, uno degli oggetti COM un metodo bloccherà, quando ho chiamata da un nuovo thread che è in modalità di threading STA poiché la modalità dell'oggetto COM è STA, e la thread UI sembra si blocca troppo, posso evitare questo blocco UI?

È stato utile?

Soluzione

Questo è il punto di STA, COM sarà maresciallo automaticamente la chiamata dal thread di lavoro al thread STA. In modo che i metodi del server COM sono sempre chiamati in un modo thread-safe. E se i blocchi di metodo, che sarà anche bloccare il tuo thread STA. Di solito il thread dell'interfaccia utente.

questo significa per uno che l'utilizzo di questo oggetto COM in un thread in realtà non realizzare nulla. Per un altro che il vero problema è nel server COM, non deve bloccare. Facciamo in modo questa non è una situazione di stallo.

Una possibile soluzione consiste nel creare il server COM su un altro thread STA così almeno il tuo thread dell'interfaccia utente non venga bloccato. Controllare questa risposta per codice di esempio. Sia il Thread.SetApartmentState e le chiamate Application.Run sono cruciali per creare una casa ospitale per il server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top