francoisIAG
Messages postés5Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention 7 avril 2008
-
4 avril 2008 à 10:54
francoisIAG
Messages postés5Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention 7 avril 2008
-
7 avril 2008 à 11:24
Bonjour,
Je programme une interface utilisateur en visual basic 2005 pour un programme de calcul écrit en fortran.
Avec System.Diagnostics.Process.Start( ) je lance l'application fortran dans la console windows.
Ensuite je dois attendre que cette application soit terminée pour continuer la routine vb...
j'ai tenté de regarder dans WaitForSingleObject .... mais sans résultat...
comment puis-je faire "attendre" vb jusqu'à la fin de l'execution du programme fortran?
francoisIAG
Messages postés5Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention 7 avril 2008 4 avril 2008 à 11:48
Hey! merci de ta réponse rapide!!
en fait j'utilise déjà le code ci-dessous pour scruter les processes
Public Function IsProgramRunning() As Boolean
Dim isRunning As Boolean
Dim localAll As Process() = Process.GetProcesses()
Dim length As Integer
length = localAll.GetLength(0)
isRunning = False
For i As Integer = 0 To length - 1
If localAll(i).ToString.Contains("ProgrammeName") Then
isRunning = True
End If
Next
Return isRunning
End Function
et dans le code appelant la fonction je fais une boucle
Do While isProgramBusy = True
isProgramBusy = IsProgramRunning()
System.Threading.Thread.Sleep(500)
Loop
le problème est d'une part que mon interface vb est totalement inactive pdt le sleep et surtout qu'apres 60 secondes
j'ai le message d'erreur suivant (traduit automatiquement de l'allemand...) qui bloque mon programme:
Le CLR ne pouvait exécuter pendant 60 secondes aucun passage(passerelle) du contexte COM 0x1a0848 au contexte COM 0x1a09b8. Le fil, le propriétaire du contexte de but /-apartments est, attend sans déplacer des annonces, ou une opération de longue durée très longtemps traite sans déplacer des annonces de Windows. Une telle situation perturbe, habituellement, l'exécution(la productivité) et peut mener même vers ce que l'emploi(application) ne réagit plus ou la charge de mémoire augmente toujours. A l'évitement de ce problème, tous les fils STA devaient utiliser les types primitifs qui déplacent des annonces (par exemple CoWaitForMultipleHandles) au poste d'observation, et lors de longues opérations de longue durée
déplacent
généralement des annonces .
Vous n’avez pas trouvé la réponse que vous recherchez ?
francoisIAG
Messages postés5Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention 7 avril 2008 4 avril 2008 à 13:05
Désolé j'étais un peu décalé..
comment indiques tu le nom du process avec process.hasexited ?
si tu le lance avec
myProcess = Process.Start("Notepad.exe") ,par exemple, pas de problème
mais s'il est déjà lancé et qu'on attend juste qu'il se termine comment lui indiquer le nom?