Domanda

I m sviluppo di un'applicazione in VB 2008, e l'utilizzo di lavoratori sfondo di file (s) copiare. Io ho la mia forma progettato, che svolge un animationon sulla parte superiore del modulo insieme con la copia. Per la riproduzione di animazione I m utilizzando "AxMSComCtl2.AxAnimation", in esecuzione ottengo

"controllo ActiveX '' non può essere istanziata perché il thread corrente non è in un singolo-filettato appartamento."

Sulla ricerca ho trovato un link: Link Forum

Ma ancora in questo link In primo luogo non capisco dove inserire questo frammento e in secondo luogo come implementare l'idea su sfondo dei lavoratori.

mi guida in questo senso.

Grazie e saluti,

Maverick.

È stato utile?

Soluzione

È necessario utilizzare un delegato e hanno il thread principale effettivamente controllare l'animazione. Si richiama il delegato dal thread in background, ma viene eseguito nel thread principale. Questa pagina, secondo post, ha l'idea di massima: http://www.vbforums.com/showthread.php?t=377205

Altri suggerimenti

Non è possibile utilizzare un BackgroundWorker per animare questo controllo. Si tratta di un controllo ActiveX, è necessario che lo si crea nel thread principale della tua app. Lo stesso filo che crea la forma.

Questa è una limitazione molto comune per i controlli in generale, che non supportano threading.

Il filo collegato non risolve il problema. Sì, è possibile creare il proprio thread STA chiamando SetApartmentState () e specificando STA, ma ora non si può fare qualsiasi cosa con il modulo che si è creato sul thread principale. Otterrete un'eccezione quando si aggiunge il controllo al form. I controlli figlio di un modulo devono essere create nello stesso thread come la forma.

Questo dovrebbe, in generale, non essere un problema. L'animazione deve essere ragionevolmente liscia come a quando si mantiene gestori di eventi del modulo breve e scattanti. Se un tale esigenze gestore eventi di fare qualcosa che richiede un po '(e congela l'animazione come un risultato) poi lasciare un BGW svolgere quel lavoro.

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