2009-07-14 6 views
1

Nous avons un programme qui appelle une fonction d'API de longue durée (SolidWorks). Après un moment, nous obtenons une boîte de dialogue d'erreur disant que "le serveur COM est occupé ...". Nous avons fait des recherches et ont trouvé que vous pouvez contrôler cela en utilisant un peu de code C++ similaire à:Comment utiliser AfxOleGetMessageFilter dans un programme VB .NET?

COleMessageFilter *pFilter = AfxOleGetMessageFilter(); 
      if(pFilter) 
      { 
       pFilter->SetMessagePendingDelay(60000); 
       pFilter = NULL; 
      } 

Le problème est, nous sommes ignorants sur le C++ avant et que vous souhaitez utiliser VB.NET. Nous avons creusé autour et il s'avère que AfxOleGetMessageFilter vient d'une bibliothèque MFC. Donc ma question est la suivante: est-il possible de réaliser cet appel à partir de VB.NET sans entrer dans MFC? AfxOleGetMessageFilter est-il un wrapper autour d'un autre appel WIN32API que nous pouvons simplement DECLARE et nous appeler? Existe-t-il des alternatives que nous devrions poursuivre?

J'ai une réponse qui suggère que j'implémente l'interface .NET IMessageFilter, mais puisque cette interface n'a qu'une seule méthode apparemment sans rapport, je suis toujours perplexe.

Répondre

0

Vous ne pouvez pas réutiliser COleMessageFilter de MFC de cette façon.

Vous avez à implement IMessageFilter in VB.Net

+0

Je ne vois pas comment IMessageFilter peut être utilisé pour prolonger ou de suspendre le délai d'attente, il met en œuvre une seule méthode appelée PreFilterMessage qui ne semble pas faire du bien. ??? – scott8035

+0

Ahh ... je viens de réaliser que vous avez fourni un lien ... – scott8035

Questions connexes