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.
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
Ahh ... je viens de réaliser que vous avez fourni un lien ... – scott8035