我正在编程一个批处理打印机,但它在打印过程中随机崩溃,并说“XXX已停止工作”,无非就是如此。我如何跟踪崩溃并获取更多信息?在Winform中跟踪崩溃
我加入try
和catch
,但它永远不会赶上支架。
代码:
private void btnPrint_Click(object sender, EventArgs e)
{
if (parts == null)
{
return;
}
ultraGrid1.PerformAction(Infragistics.Win.UltraWinGrid.UltraGridAction.ExitEditMode);
foreach (Part part in parts)
{
if (part.Selected)
{
switch (part.FileType)
{
case "PDF":
//SendToPDFReaderPrinter(part);
break;
case "SLDDRW":
if (!useSolidworksToPrint)
{
SendToeDrawingsPrinter(part);
}
else
{
//SendToSolidworksPrinter(part);
}
break;
}
}
}
MessageBox.Show("Print Complete.");
}
private void SendToeDrawingsPrinter(Part part)
{
try
{
string filePath = part.FilePath;
//Show Preview
axAcroPDF1.Hide();
eDrawingControl1.Show();
//Load file
eDrawingControl1.eDrawingControlWrapper.OpenDoc(filePath, false, false, false, "");
//Config
eDrawingControl1.eDrawingControlWrapper.SetPageSetupOptions(EModelView.EMVPrintOrientation.eLandscape, 1, 0, 0, 1, 7, printerName, 1, 1, 1, 1);
//Print
Wait(2); //Wait for 2 seconds
eDrawingControl1.eDrawingControlWrapper.Print4(false, filePath, false, false, true, EModelView.EMVPrintType.eScaleToFit, 1, 0, 0, true, 1, 1);
Wait(2); //Wait for 2 seconds
//eDrawingControl1.eDrawingControlWrapper.CloseActiveDoc("");
//Hightligh Printed Row
HighlightPrintedRow(part, true);
}
catch
{
HighlightPrintedRow(part, false);
}
}
//Wait
private void Wait(double seconds)
{
DateTime start = DateTime.Now;
while (start.AddSeconds(seconds) >= DateTime.Now)
{
System.Windows.Forms.Application.DoEvents();
}
}
private void HighlightPrintedRow(Part part, bool isSuccessful)
{
foreach (var row in ultraGrid1.Rows)
{
if ((Part)row.ListObject == part)
{
row.Appearance.BackColor = (isSuccessful ? Color.LightGreen : Color.Red);
break;
}
}
}
在调试器下运行时会发生这种情况吗?你是否将它设置为在抛出异常时停止? –
你是否已经逐步缩小了它发生的路线? – DonBoitnott
谢谢,我会努力使“打破时抛出异常”时迈通... @ DonBoitnott – Brian