Domanda

sulle DISPID_DOCUMENTCOMPLETE se vi allego un gestore onclick per un elemento particolare nel DOM da un thread di lavoro, allora l'evento è non essere stato licenziato, mentre clic su di esso, quello che potrebbe essere il motivo? questo sta lavorando bene, se vi allego gestore di eventi dal thread principale, ma voglio fare le cose in modo asincrono.

Sto usando CoMarshalInterThreadInterfaceInStream e CoGetInterfaceAndReleaseStream passare puntatore IID_IWebBrowser2 tra i thread.

È stato utile?

Soluzione

Qual è il tuo thread di lavoro facendo, e qual è il modello di threading del gestore di eventi? Se il modello di filettatura è STA, allora il thread di lavoro deve sia periodicamente pompare messaggi, o se non è in attesa di sincronizzazione allora dovrebbe utilizzare le funzioni CoWaitFor..., per assicurarsi che i messaggi COM verranno elaborati. In alternativa, è possibile aggregare i marshaller filettata libera, ma assicurarsi che l'oggetto è thread-safe, e non chiama fuori per qualsiasi altra interfaccia COM che potrebbe dare un errore di modello di threading, se si esegue questa operazione.

Probabilmente, il controllo del browser web non è compatibile con la MTA, quindi non sarà in grado di metterlo in questo. In ogni caso, il MTA non è compatibile con un thread di interfaccia utente in modo che le regole che fuori.

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