Bonjour,
ça fait plusieurs jours que je suis sur ce problème sans jamais trouver de solution...
Je développe une maccro solidworks en VB.net, celle-ci utilise un objet COM provenant d'une dll que j'ai développé en c++. Les fonctions de cette objet COM sont assez longue a exécuter (parfois plus de 30secondes) et utilise également des boucles paralléliser (avec OpenMP).
Mon problème c'est du coup que des que je lance une de ces fonctions au bout de 10sec le programme se met en pas de réponse, freezant visuellement mon interface. Vu que le code tourne dans la dll, on ne peut pas envoyer de réponse à l'UI avec un DoEvent...
J'ai essayé de mettre la fonction dans un background worker mais vu que c'est un objet COM cela de marche pas. L'autre chose j'ai essayé c'est de faire un background worker qui accède à un intervalle de temps régulier à mon process pour voir si il répond mais quand il ne répond plus je n'arrive pas à forcer à répondre à nouveau. La seul solution que j'ai trouver c'est de changer la valeur de la clé de registre "HungAppTimeout", mais cela s'applique sur l'ensemble des softwares du pc alors que je voudrais juste l'appliquer sur mon code.
Auriez vous une solution pour éviter le "pas de réponse"?
le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Public Sub LancerfonctionCOM() Dim maclasse as ClasseCOM = new ClasseCOM maclasse.fonctionsuperlongue() 'temps >10sec end sub
Partager