popup anti-plantage C# ?

Le
JC
Bonjour

Mon application est écrite en C# et appelle du code Windev (ci-
dessous) par l'intermédaire d'un assemblage .Net (par procédures
globales) créé depuis Windev. Tout fonctionne très bien, MAIS POUR
CELA j'ai du insérer une popup (qui ne sert à rien) dans le code
Windev pour que l'appel depuis C# ne plante pas. Sans cette popup,
l'appel depuis C# provoque une erreur de "Acces Violation Exception",
genre écriture en mémoire impossible. Avec cette popup, l'appel
fonctionne très bien et on récupère bien les bonnes données. Il y a
sûrement une explication logique, mais je ne l'ai pas trouvée.

Comme la procédure en cause est appelée très souvent (quelques
dizaines de fois par minute), cette popup est insupportable et
parasite le fonctionnement de l’application. Je voudrais donc savoir
comment m’en passer (sans faire planter l’appli bien sûr), et surtout
comprendre pourquoi cette popup empêche le plantage. Pour info, un «
TRACE » ne marche pas aussi bien que la popup.

Est-ce que quelqu'un a des idées ?

JC


PROCEDURE choixMusique(nomProfil, distanceMinimale)

tabRésultat est un tableau de 0 chaîne
numProfil est un entier


// Recherche de l'Id du profil dont le nom est passé en paramètre de
la procédure
HLitRecherchePremier(Profil, NomProfil, nomProfil)
// Compte rendu
SI HTrouve()=Faux ALORS
Info("La valeur recherchée n'a pas été trouvée")
RENVOYER tabRésultat
FIN

numProfil = Profil.IDProfil

HFiltreIdentique(Musique_Profil,IDProfil, numProfil)

rDistanceCourante est un réel

REQ_ListeCheminsParDistanceEtProfil.valeurDistanceMinimale =
distanceMinimale
REQ_ListeCheminsParDistanceEtProfil.numProfil = numProfil
// Initialise la requête
SI PAS HExécuteRequête(REQ_ListeCheminsParDistanceEtProfil) ALORS
Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
RENVOYER tabRésultat
FIN


// à cause d'un bug côté C# à l'appel de cette fonction, on ajoute =
une
popup qui affiche les étapes
// cette popup FAIT FONCTIONNER l'appel ! Sans elle, C# plante !!!
Info("étape 4")


// lecture du premier enregistrement de la requête
HLitPremier(REQ_ListeCheminsParDistanceEtProfil)
TANTQUE PAS HEnDehors()
// Traitement sur l'enregistrement de la requête
TableauAjoute(tabRésultat,
REQ_ListeCheminsParDistanceEtProfil.Chemin)
// lecture de l'enregistrement suivant
HLitSuivant()
FIN
HAnnuleDéclaration(REQ_ListeCheminsParDistanceEtProfil)


HDésactiveFiltre(Musique_Profil)


RENVOYER tabRésultat
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
STASZEWSKI André
Le #22256001
Bonjour,
Essayer de passer par un thread...?
--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu et Cut Data Radars sur
http://pagesperso-orange.fr/mdev/
Pour me contacter, cliquez ici :
http://cerbermail.com/?OT0Wnwyzph

"JC"
Bonjour

Mon application est écrite en C# et appelle du code Windev (ci-
dessous) par l'intermédaire d'un assemblage .Net (par procédures
globales) créé depuis Windev. Tout fonctionne très bien, MAIS POUR
CELA j'ai du insérer une popup (qui ne sert à rien) dans le code
Windev pour que l'appel depuis C# ne plante pas. Sans cette popup,
l'appel depuis C# provoque une erreur de "Acces Violation Exception",
genre écriture en mémoire impossible. Avec cette popup, l'appel
fonctionne très bien et on récupère bien les bonnes données. Il y a
sûrement une explication logique, mais je ne l'ai pas trouvée.

Comme la procédure en cause est appelée très souvent (quelques
dizaines de fois par minute), cette popup est insupportable et
parasite le fonctionnement de l’application. Je voudrais donc savoir
comment m’en passer (sans faire planter l’appli bien sûr), et surtout
comprendre pourquoi cette popup empêche le plantage. Pour info, un «
TRACE » ne marche pas aussi bien que la popup.

Est-ce que quelqu'un a des idées ?

JC


PROCEDURE choixMusique(nomProfil, distanceMinimale)

tabRésultat est un tableau de 0 chaîne
numProfil est un entier


// Recherche de l'Id du profil dont le nom est passé en paramètre de
la procédure
HLitRecherchePremier(Profil, NomProfil, nomProfil)
// Compte rendu
SI HTrouve()úux ALORS
Info("La valeur recherchée n'a pas été trouvée")
RENVOYER tabRésultat
FIN

numProfil = Profil.IDProfil

HFiltreIdentique(Musique_Profil,IDProfil, numProfil)

rDistanceCourante est un réel

REQ_ListeCheminsParDistanceEtProfil.valeurDistanceMinimale distanceMinimale
REQ_ListeCheminsParDistanceEtProfil.numProfil = numProfil
// Initialise la requête
SI PAS HExécuteRequête(REQ_ListeCheminsParDistanceEtProfil) ALORS
Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
RENVOYER tabRésultat
FIN


// à cause d'un bug côté C# à l'appel de cette fonction, on ajoute une
popup qui affiche les étapes
// cette popup FAIT FONCTIONNER l'appel ! Sans elle, C# plante !!!
Info("étape 4")


// lecture du premier enregistrement de la requête
HLitPremier(REQ_ListeCheminsParDistanceEtProfil)
TANTQUE PAS HEnDehors()
// Traitement sur l'enregistrement de la requête
TableauAjoute(tabRésultat,
REQ_ListeCheminsParDistanceEtProfil.Chemin)
// lecture de l'enregistrement suivant
HLitSuivant()
FIN
HAnnuleDéclaration(REQ_ListeCheminsParDistanceEtProfil)


HDésactiveFiltre(Musique_Profil)


RENVOYER tabRésultat
Publicité
Poster une réponse
Anonyme