Ho un cliente/partner che sta cercando di collegare la propria applicazione alla nostra utilizzando la nostra funzionalità COM esposta. Finora, hanno un oggetto COM che rappresenta un'istanza del nostro pacchetto software e quindi utilizzano i nostri metodi COM per creare in modo programmatico qualcosa per l'utente in base a ciò che hanno fatto nella loro applicazione. È essenzialmente una funzione di "esportazione".Rilasciare "proprietà" dell'oggetto COM in .NET
Quello che mi hanno chiesto di fare, che non riesco a capire come fare è consentire all'utente di decidere quando l'istanza è chiusa. Ciò che intendo è quando il nostro pacchetto software viene caricato, è visualizzabile e interagisce con l'utente. Quando avranno finito, farebbero clic sulla croce in alto a destra per uscire dal software. Questo non funziona poiché l'oggetto COM è ancora "attivo" nella loro applicazione. Il nostro pacchetto software può essere chiuso solo eliminando il processo in Task Manager mentre l'applicazione che lo ha caricato tramite COM rimane aperto. Una volta che la loro applicazione è terminata, la nostra si chiuderà automaticamente. Sembra che la loro applicazione "possegga" la nostra a causa della chiamata COM.
Ho fatto una rapida app dimostrativa in C# per provare a utilizzare cose come Marshal.FinalReleaseComObject(myObject)
inutilmente.
Mi rendo conto che l'utilizzo di COM per questo genere di cose non è proprio quello a cui è destinato, ma si spera che ci sia una soluzione alternativa? Il cliente/partner utilizza VB.NET ma C# va bene.
Si prega di chiarire se l'applicazione è automatizzata dall'interno dell'applicazione stessa (simile allo scripting VBA all'interno di applicazioni VS o Office) o dall'esterno (simile all'utilizzo dell'automazione di Word per creare un nuovo documento dalla propria app/script della console)? –
Non riescono a chiudere una finestra? Non ha senso, dovrai chiarire. –
Viene da fuori, stanno usando VB per avviare un nuovo processo facendo riferimento al nostro exe e istanziando un oggetto COM da esso. Abbiamo un "Open" che fa esattamente quello che sembra, apre una finestra utilizzabile del nostro pacchetto software. In termini di non essere in grado di chiudere la finestra, non è possibile fare clic sulla X rossa in alto a destra, ma è possibile ma non accade nulla. Si chiuderà solo quando la loro applicazione VB è chiusa. Non so molto sull'interoperabilità di COM, ma sembra che l'app VB abbia la proprietà o sia la madre di quel processo. – sxthomson