Je suis à l'aide d'un objet COM (MODI) à partir de dans mon .net application. La méthode de travail, je lance un appel Système.AccessViolationException, qui est intercepté par Visual Studio. La chose étrange est que j'ai enveloppé mon appel dans un try catch, qui a des gestionnaires pour AccessViolationException, COMException et tout et tout, mais lorsque Visual Studio (2010) intercepte le AccessViolationException, le débogueur se brise sur l'appel de la méthode (doc.OCR), et si je fais un pas de travers, il continue à la ligne suivante au lieu d'entrer dans le bloc catch. En outre, si je l'exécute en dehors de visual studio sur mon application se bloque. Comment puis-je gérer cette exception qui est levée à l'intérieur de l'objet COM?
MODI.Document doc = new MODI.Document();
try
{
doc.Create(sFileName);
try
{
doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
sText = doc.Images[0].Layout.Text;
}
catch (System.AccessViolationException ex)
{
//MODI seems to get access violations for some reason, but is still able to return the OCR text.
sText = doc.Images[0].Layout.Text;
}
catch (System.Runtime.InteropServices.COMException ex)
{
//if no text exists, the engine throws an exception.
sText = "";
}
catch
{
sText = "";
}
if (sText != null)
{
sText = sText.Trim();
}
}
finally
{
doc.Close(false);
//Cleanup routine, this is how we are able to delete files used by MODI.
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(doc);
doc = null;
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}