public void get_recog(byte[] p_bt, int p_len, int w, int h, int p_stride) { try { se.smartid.Image sm_img = new se.smartid.Image(p_bt, (uint)Math.Abs(p_stride) * 3, w, h, Math.Abs(p_stride), 3); recog_result = session.ProcessImage(sm_img); } catch (Exception e) { MessageBox.Show("Error " + e); } if (recog_result.IsTerminal() || cnt >= RecogCnt.Value) { if (File.Exists(curr_dir + @"\recognize.log")) { File.Delete(curr_dir + @"\recognize.log"); } System.IO.FileStream ostrm = new FileStream(curr_dir + @"\recognize.log", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter writer; TextWriter oldOut = Console.Out; writer = new StreamWriter(ostrm); Console.SetOut(writer); Console.WriteLine("Start recognize application"); Console.WriteLine("--------------------------------"); reporter = new CsReporter(); // this is important: GC works differently with native-heap objects OutputRecognitionResult(recog_result); recog_result.Dispose(); session.Dispose(); engine.Dispose(); reporter.Dispose(); Console.WriteLine("End application!"); Console.SetOut(oldOut); writer.Close(); ostrm.Close(); destroy(); } else { cnt++; pBar.PerformStep(); Capture(); } }
private void destroy() { mediaCtrl.Stop(); if (recog_result != null) { recog_result.Dispose(); } if (session != null) { session.Dispose(); } if (settings != null) { settings.Dispose(); } if (engine != null) { engine.Dispose(); } if (reporter != null) { reporter.Dispose(); } capDevices = null; savedArray = null; videoPanel.Dispose(); //pBar.Dispose(); //Form1.Dispose(); Application.Exit(); }