savoir si un processus est en train de réfléchir, possible ? [C#] - C#/.NET managed - Programmation
Marsh Posté le 17-11-2011 à 17:38:17
ha ouais, pas idiot la solution,
mais mon processus (SAP) ne consomme pas trop de CPU quand il bosse, c'est du traitement sur serveur, et retour, donc pas evident à determiner quand il bosse
Et c'est pas du C#, ni la main dessus
Pas sur que je puisse donc
Marsh Posté le 17-11-2011 à 21:41:45
http://msdn.microsoft.com/en-us/li [...] 71%29.aspx peut être?
Marsh Posté le 17-11-2011 à 23:16:10
je teste ca au bureau alors
merci, ca semble pouvoir convenir !
Marsh Posté le 21-11-2011 à 08:41:59
bon, aucune solution ne va
- Sendwait ne prend pas en compte le traitement de SAP,
- SAP ne consomme pas de CPU ni de ram, ni de reseau quand il requete (temps serveur je pense)
- Et waitforinputidle passe directement à la suite
SAP à une UI un peu batarde, je me demande si ca ne viendrait pas de la ...
Je ne vois qu'une solution : pouvoir voir quel est le curseur de la souris (normal, ou sablier)
Marsh Posté le 22-11-2011 à 12:58:22
Quelque réflexion pour waitforinputidle:
-renvoie vrai/faux? renvoie faux si pas de boucle de message?
Sinon si c'est un programme style windows (donc avec boucle, je connais le programme en question en fait), est ce qu'il est multithread? (et donc le calcul se faisant hors du thread des messages celui ci se met en idle?
Ensuite si le calcul dépend du réseau/accès disque, etc alors le thread de calcul passe aussi beaucoup de temps à attendre...
donc pour détecter la fin pas évident?
Si thread spécial pour le calcul, détecter la fin du thread? (analyse de process.Threads?)
Marsh Posté le 22-11-2011 à 15:50:26
breizhbugs a écrit : Quelque réflexion pour waitforinputidle: |
Il leve une exception si pas de boucle de message, et renvoi vrai ou faux oui
breizhbugs a écrit : Sinon si c'est un programme style windows (donc avec boucle, je connais le programme en question en fait), est ce qu'il est multithread? (et donc le calcul se faisant hors du thread des messages celui ci se met en idle? |
C'est un soft sous windows oui, mais pas avec l'interface graphique windows je pense
(capture google, on est sous vista)
Je pense qu'il est threadé oui, je vais eplucher process.threads voir si je peut en tirer quelquechose, c'est une piste
Actuellement mon appli marche, mais prends 50% de son temps à attendre pour etre sur que SAP ne reflechisse plus,
soit 45min pour un export double-journalier, j'aimerais reduire à 20min / export en detectant la fin de calcul
Marsh Posté le 22-11-2011 à 16:10:18
En parcourant tous les threads du process, ils sont tous en state wait quand sap ne fait rien, et quand je requete, j'ai bien un thread en running,
c'est tres bon ca, ca sera moins bancale et plus rassurant pour moi
merci pour les pistes
edit : et il repasse en wait apres, donc super,
une sorte de
do
tempo
while tous les threads ne sont pas en wait
suite
Marsh Posté le 17-11-2011 à 15:20:43
Bonjour,
J'ai une appli C# qui me fait un export à partir d'une autre appli,
A coup de sendkeys,
J'ai juste une opération que je ne peut pas estimer en temps, cela dépend du réseau, ect...
Est-il possible de patienter jusqu'à ce que ce process retrouve ai fini son traitement, cad le curseur soit redevenu normal par exemple ?
Genre un
while(process.isworking()){
// tempo quelques secondes pour attendre
}
// suite