Domanda

Ho un controllo ActiveX scritto utilizzando la libreria MS ATL e sto attivando eventi tramite pDispatch->Invoke(..., DISPATCH_METHOD).Il controllo verrà utilizzato da un client .NET e la mia domanda è questa: l'attivazione dell'evento è una chiamata sincrona o asincrona?La mia preoccupazione è che, se sincrona, l'applicazione che gestisce l'evento potrebbe causare problemi di prestazioni a meno che non ritorni immediatamente.

È stato utile?

Soluzione

È sincrono dal punto di vista del componente che genera l'evento.Il thread di esecuzione del controllo chiamerà il codice del ricevitore e a quel punto le cose saranno fuori dal suo controllo.

I clienti che ricevono gli eventi devono assicurarsi di tornare rapidamente.Se hanno bisogno di svolgere una quantità significativa di lavoro, dovrebbero pianificarlo in modo asincrono.Ad esempio pubblicando un messaggio Windows o utilizzando un thread separato.

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