2010-12-31 8 views
1
private void button4_Click(object sender, EventArgs e) 
{ 
     OCR.recognize("test1.tif"); 
     System.IO.File.Delete("test1.tif"); // <--- Problem on this line 
} 

.... 

public static string recognize(string filepath, MODI.MiLANGUAGES language = 
MODI.MiLANGUAGES.miLANG_RUSSIAN) 
{ 
     if (!File.Exists(filepath)) return "error 1: File does not exist"; 
     MODI.Document doc = new MODI.Document(); 
     doc.Create(filepath); 

     doc.OCR(language, true, true); 
     MODI.Image image = (MODI.Image)doc.Images[0]; 

     string result=""; 
     foreach (MODI.Word worditems in image.Layout.Words) 
     { 
      result += worditems.Text + ' '; 

     // Processed image is ALWAYS a question 
      if (worditems.Text[worditems.Text.Length - 1] == '?') break; 
     } 


     doc.Close(); 

     return result; 

} 

Problem ist: Datei wird von einem anderen Prozess verwendet.Warum MODI lässt mich nicht die verarbeitete Datei löschen?

Wie lösche ich es nach OCR?

Antwort

0

Jemand posted a solution dafür:

public void Dispose() 
{ 
     doc.Close(false); 
     System.Runtime.InteropServices.Marshal.FinalReleaseComObject(doc); 
     doc = null; 
     GC.Collect(); 
} 

Vielleicht klappt es für Ihren Fall auch.

+0

Nein. Gleicher Fehler. :( –

+0

Sie können weiterhin Process Monitor von SysInternals verwenden, um zu sehen, welcher Prozess tatsächlich auf die Datei zugreift. Vielleicht ist es etwas anderes, als Sie derzeit denken, ist es. Http://technet.microsoft.com/en-us/sysinternals/bb896645 –

+0

Nein, das ist die Anwendung. Quiz.vshost.exe wo quiz ist meine app. –