In VB.NET heb ik een app ontwikkeld. Het werkt goed, maar het einde van de uitvoering is niet helemaal schoon.
De applicatie logt in op solidworks: swApp = New SldWorks
Er is van alles aan de hand...
Dan sluit ik het document: swApp.CloseDoc(sDocfilename)
Er is nog veel gaande en het programma loopt ten einde
Logischerwijs heb ik een leeg solidworks venster dat open blijft staan. Als ik het met de hand sluit, zie ik dat het SLDWORKS-proces dan in de lijst met "achtergrondprocessen" gaat met een "-Embedding" in de opdrachtregel. Ik merk hetzelfde fenomeen als ik de code toevoeg: swApp.ExitApp() .
Deze solidworks-sessie op de achtergrond zorgt ervoor dat nieuwe sessies crashen. Je moet hem dus met de hand doden.
Om hier uit te komen kun je aan het einde van het programma een lus maken die alle actieve processen opsomt en de "SLDWORKS.exe" proces(sen) "doden", wat ik doe met al mijn programma's (C#) die Solidworks op een of ander moment aansturen.
Ik vroeg me af of er een manier was voor mijn applicatie om deze onderliggende processen op te sommen. Maar het ziet er niet gemakkelijk uit.
Het doden van alle solidworks-processen lijkt me een beetje brutaal. Mijn applicatie wordt gelanceerd als een taak (wanneer een document is goedgekeurd) en het zou zonde zijn om de sessie van de gebruiker te doden.
Als het te ingewikkeld lijkt voor uw behoeften en aangezien het een veilige gok is dat u problemen zult tegenkomen met betrekking tot de rechten die nodig zijn om deze functies te gebruiken, kunt u het misschien allemaal omzeilen door terug te gaan naar de eerste suggestie (Om eruit te komen kunt u aan het einde van het programma, maak een lus die alle actieve processen opsomt en "dood" de "SLDWORKS.exe" proces(en), maar stop alleen het proces waarvan "MainWindowTitle" een bepaalde waarde bevat, een waarde die je kunt definiëren door bijvoorbeeld een kamer met een "rare" naam te maken voordat je dit proces stopt. Zo blijft u op eenvoudige en directe toegang in system.diagnostic.process.