调用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(); //退出
} }
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(); //退出
} }
/// <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 + "失败!");
}
}