Wie kann ich ein Dialogfeld unterdrücken, das durch einen Code angezeigt wird, den ich nicht ändern kann?

Ich habe einen Inproc COM-Server von einem Drittanbieter. Bei einer der von mir aufgerufenen Funktionen wird ein Dialogfeld mit einer Fehlermeldung angezeigt, wenn eine bestimmte Art von Fehler auftritt. Das Problem ist, dass ich versuche, Daten in großen Mengen zu verarbeiten, und die von mir verwendete Datenquelle dazu führt, dass das Fehlerdialogfeld häufig angezeigt wird. Dies wäre kein Problem, wenn 1000 Dialogfelder erzeugt würden, sondern blockiert und die Funktion erst nach Drücken von OK zurückgegeben würde.

Wie kann ich die Anzeige des Dialogfelds unterdrücken oder programmgesteuert OK drücken?

Hier ist eine Kopie des Aufrufstapels, da darauf gewartet wird, dass ich OK drücke

    [Managed to Native Transition]  
>   System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID, int reason, int pvLoopData) Line 2198 + 0x1e bytes   C#
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) Line 3422 + 0x1b bytes C#
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) Line 3306 + 0xc bytes   C#
    System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm) Line 1495 + 0x31 bytes    C#
    UniversalDataImporter.exe!UniversalDataImporter.Program.Main() Line 18 + 0x1d bytes C#
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) Line 2023 + 0x18 bytes  C#
    Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x27 bytes  
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) Line 68 + 0x27 bytes   C#
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Line 581 + 0xd bytes  C#
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Line 530 + 0xd bytes  C#
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 519 + 0xe bytes    C#
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() Line 105 + 0x20 bytes  C#
    [Native to Managed Transition]  

Ich bezweifle, dass es helfen wird (es gibt keine Optionen zum Deaktivieren des Meldungsfelds, zu abonnierende Ereignisse oder andere Überladungen der Funktion), aber hier ist der aufrufende Code.

for (int i = 1; i <= recordCount; i++)
{
    //If the dialog shows up the following line blocks till you press OK.
    var values = _comServer.GetValues(fileHandle, i); 

    sqlDataConsumer.LoadRow(values);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage