Symptom
The following error message occurs when execute CopyTo method in .NET application
"Attempted to read or write protected memory. This is often an indication that other memory is corrupted"
Environment
- Crystal Reports 2008 V1
- Visual Studio 2005
- Visual Studio 2008
Reproducing the Issue
C# .NET application contains CopyTo method and error occurs when printing to printer.
e.g.
private void button1_Click(object sender, EventArgs e)
{
System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PaperSize selectedPaperSize = new System.Drawing.Printing.PaperSize();
private const string SELECTED_PRINTER = "Epson LQ-300 ESC/P 2";
CRReport = new ReportDocument();
CRReport.Load(@"C:\test.rpt");
printerSettings.PrinterName = SELECTED_PRINTER;
foreach (System.Drawing.Printing.PaperSize paperSize in printerSettings.PaperSizes)
{
if (paperSize.PaperName == "Fanfold 210 x 12 in") //An Enum paper size is machine dependent (i.e. 280)
{
selectedPaperSize = paperSize;
}
}
System.Drawing.Printing.PageSettings pageSettings = new System.Drawing.Printing.PageSettings();
CrystalDecisions.Shared.PrintLayoutSettings PrintLayout = new CrystalDecisions.Shared.PrintLayoutSettings();
PrintOptions printOptions = CRReport.PrintOptions;
printOptions.PrinterName = SELECTED_PRINTER;
printOptions.PaperSize = selectedPaperSize.RawKind;
printOptions.DissociatePageSizeAndPrinterPaperSize = true;
PrintLayout.Scaling = PrintLayoutSettings.PrintScaling.Scale;
CRReport.PrintOptions.CopyTo(printerSettings, pageSettings);
CRReport.PrintToPrinter(printerSettings,pageSettings,false,PrintLayout);
}
Cause
This issue has been identified and is tracked under ID ADAPT01546534.
Resolution
The issue is scheduled to be fixed in a future Service Pack.
Workaround:
Add parameter 'printerSettings' in System.Drawing.Printing.PageSettings() to describe a specified printer to use.
System.Drawing.Printing.PageSettings pageSettings = new System.Drawing.Printing.PageSettings(printerSettings);
Keywords
custom paper size, user defined paper size, enum, server properties, Printing Preferences, paper source, Default Printer, Print Report, Layout , KBA , BI-DEV-NET-SDK , .NET SDK / COM SDK , Problem