在Winform中跟踪崩溃
我正在编程一个批处理打印机,但它在打印过程中随机崩溃,并说“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;
}
}
}
尝试看看系统的事件查看器。通常情况下,如果你的.NET应用程序出现“xxx停止工作”,你会发现一些东西。
或者,您可以使用低级错误跟踪组件从.NET运行时捕获所有异常。请参阅BugTrap
错误应用程序名称:bruno_batchprint.vshost.exe,版本:12.0.21005.1,时间戳:0x524fac12 错误模块名称: EModelView.dll,版本:15.0.0.5013,时间戳:0x5429b603 异常代码:0000005 故障偏移:0x00000000000a9c68 出错进程ID:0x2b84 错误的应用程序启动时间:0x01d1007ba16d0b38 错误的应用程序路径:d:\项目\ brumo_batch_print_excel \ bruno_batchprint \ Bin \ Debug \ bruno_batchprint.vshost.exe 错误模块路径:C:\ Program Files \ SOLIDWORKS Corp \ eDrawings X64 Edition \ EModelView.dll 报告编号:f2556ebe-6c70-11e5-b85d-c0389642987a – Brian
我想这个意味着错误发生在“EModelView.dll”中?我怎么知道它是由dll的内部错误引起的还是因为我以不正确的方式使用它? – Brian
是的,这是该组件的错。您可能需要询问该组件的支持团队。或者你仍然可以尝试使用BugTrap,看看它是否可以告诉你更多的细节。 – xtu
在调试器下运行时会发生这种情况吗?你是否将它设置为在抛出异常时停止? –
你是否已经逐步缩小了它发生的路线? – DonBoitnott
谢谢,我会努力使“打破时抛出异常”时迈通... @ DonBoitnott – Brian