调用CODESOFT打印,程式每开启一次会在进程中增加一LPPA进程,如何在程式关闭时将此进程释放。因为这个函数调用几次之后就会出现unhandled的错误。打印函数如下:
       public bool PrintSNBarCode(string labelname, string var1, int marginleft, int margintop,int qty)
        {
            ApplicationClass lbl = new ApplicationClass();            //取标签路径
            string labelpath = GetLabelPath();            try
            {
                lbl.Documents.Open(@"" + labelpath + "" + labelname + "", false);// 调用设计好的label文件
                Document doc = lbl.ActiveDocument;                //设置标签位置
                doc.Format.MarginLeft = doc.Format.MarginLeft + marginleft;
                doc.Format.MarginTop = doc.Format.MarginTop + margintop;                //给参数传值
                doc.Variables.FormVariables.Item("SN").Value = "" + var1  + "";
                //打印
                doc.PrintDocument(qty);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }            finally
            {
                lbl.Quit();                                         //退出
            }        }

解决方案 »

  1.   

    打印完成后,把用到的ApplicationClass lbl,Document doc 手动销毁一下!
      

  2.   

    每打印一张条码后手动杀死进程 KillProcess("lppa")
         /// <summary>
            /// 强制杀死进程
            /// </summary>
            /// <param name="ProcessName">进程名称</param>
            private void KillProcess(string ProcessName)
            {
                try
                {
                    foreach (Process p in Process.GetProcessesByName(ProcessName))
                    {
                        if (!p.CloseMainWindow())
                        {
                            p.Kill();
                        }
                    }
                }
                catch
                {
                    System.Console.WriteLine("释放进程" + ProcessName + "失败!");
                }
            }