Bonjour à tous !
Tout d’abord, permettez-moi de vous présenter ma situation en deux mots. J’ai un handicap moteur qui m’empêche de tenir un livre et d’en tourner les pages moi-même. Je reprends l’université dans deux semaines et vraiment besoin d’avoir une solution aisée pour accéder à la littérature non électronique.
Je scan tous mes livres et je conserve chaque page dans un fichier BitMap distinct.
Je crée une application VB.NET où, d’une part, je stocke les références bibliographiques et, d’autre part, je peux lire les pages scannées grâce au parcours d’une table de ma base de données.
A cette fin, j’écris une procédure d’importation des pages dans la DB au cours de laquelle je peux effectuer une rotation de toutes les BitMaps et les découper en deux lorsqu’il s’agit de doubles pages (des options bien sûre).
En vous écrivant tout cela, j’espère que le code de la classe (en pièce jointe) vous sera plus clair. Cette classe est héritée du composant « BackgroundWorker » Elle contient, entre bien d’autres, deux Sub pouvant servir de méthode DoWork. L’une effectue la rotation des BitMaps. L’autre leur découpage.
C’est la procédure de rotation des BitMaps qui a un comportement fort curieux. Elle s’exécute deux fois d’affilée sans raison apparente. Lorsque je suis dans le débogueur, j’observe que si le End Sub est exécuté une première fois, VB retourne directement au Sub de la même procédure. Il recommence son traitement. Puis ressort tout à fait normalement. (Je vous jure de ne pas avoir fumé la moquette…)
Auriez-vous une idée de la raison de cette double exécution ? Comment l’empêcher et faire en sorte que la tâche d’arrière-plan ne s’exécute qu’une seule fois ?
Merci de vos conseils avisés !
Avec mes sincères salutations,
Partager