Wir haben ein Programm, das eine langlaufende (SolidWorks) API-Funktion aufruft. Nach einer Weile erhalten wir einen Fehlerdialog, der sagt, dass "der COM-Server beschäftigt ist ...". Wir haben einige der Forschung getan und haben festgestellt, dass Sie dies durch die Verwendung eines Bit von C++ Code ähnlich steuern:Wie verwende ich AfxOleGetMessageFilter in einem VB .NET-Programm?
COleMessageFilter *pFilter = AfxOleGetMessageFilter();
if(pFilter)
{
pFilter->SetMessagePendingDelay(60000);
pFilter = NULL;
}
Problem ist, wir sind unwissend über die C++ vorne und wollen VB.NET verwenden. Wir haben gegraben und es stellt sich heraus, dass AfxOleGetMessageFilter von einer MFC-Bibliothek stammt. Meine Frage ist also: Gibt es eine Möglichkeit, wie wir diesen Aufruf von VB.NET ohne Einstieg in MFC erreichen können? Ist AfxOleGetMessageFilter ein Wrapper um einen anderen WIN32API-Aufruf, den wir einfach deklarieren können und uns anrufen? Gibt es Alternativen, die wir verfolgen sollten?
Ich habe eine Antwort, die schlägt vor, dass ich die .NET IMessageFilter-Schnittstelle implementieren, aber da diese Schnittstelle nur eine scheinbar nicht verwandte Methode hat, bin ich immer noch ratlos.
Ich sehe nicht, wie IMessageFilter verwendet werden kann, um das Timeout zu verlängern oder auszusetzen, es setzt nur eine Methode namens PreFilterMessage, die nicht gut zu tun scheint. ??? – scott8035
Ahh ... realisierte gerade, dass du einen Link zur Verfügung gestellt hast ... – scott8035