cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 2011
-
1 avril 2007 à 19:58
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 2009
-
2 avril 2007 à 20:51
Salut,
Voilà, je programmes avec Visual Studio 2005 (VB.NET) et j'ai un souci avec le BackGroundWorker. En effet, pendant qu'il travaille, je veux exécuter un script avec Shell (je veux attendre la fin d'exécution du script avant de continuer) mais il me dit qu'il ne trouve pas le programme alors qu'en dehors du BackGroundWorker, il l'exécute très bien.
Je vous mets le code pour que vous voyez plus clair :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
<table border="0">----, Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Treatment()
End Sub
Private Function Treatment() As Long
Shell(My.Application.Info.DirectoryPath + \"\Ressource\memoire.vbs\", AppWinStyle.Hide, True)
BackgroundWorker1.CancelAsync()
End Function</td>----
(Coloration syntaxique automatique par Kenji)
</td></tr><tr><td colspan="2">
</td></tr></tbody></table>Juste après le Shell (qui attends la fin de l'exécution du script pour continuer), j'arrête le BackGroundWorker. Est ce que vous savez pourquoi je peux pas accéder au script dans la fonction Treatment() et est ce que vous aurez une solution pour y parvenir ?
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 1 avril 2007 à 23:07
j'allais te demander pourquoi tu passais par un shell plutot que les methodes proposée dans le framework.
En tout cas je pense que cela venait surement du fait que My.Application ne puisse etre appelé dans un thread.
Enfin, dans ton cas, pourquoi passer par le chemin absolu alors que tes ressources sont dans un sous repertoire du repertoire de l'application..?
Le chemin relatif suffirait : monprocess.StartInfo.FileName = "Ressources\memoire.vbs"
non?
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 1 avril 2007 à 23:11
Salut,
J'ai déja essayé avec Shell, c'était ma première solution mais l'interface gelait et je n'ai pas reussi à contourner ce problème j'ai donc trouvé avec monprocess. Sinon, j'ai testé
monprocess.StartInfo.FileName = "Ressources\memoire.vbs" et effectivement ca marche très bien, ca fait un peu moins de code.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 2 avril 2007 à 20:51
sur une saisie utilisateur je comprend l'utilité de path.combine, mais la pour une information "en dur", pourquoi preferer cette méthode?
prendre l'habitude peut-être...