[C# MS V10.16.02.34] IPrintset.Publish crashes when plotting PNG with WorkerMicroStation

I have implemented the IPrintManager code example from the MSTNPlatformNET.chm for plotting using an existing PltCfgFile

The code for this is almost verbatim except that I load the PNG driver instead of the PDF driver, and that I've set publishingParams.UseSeparateJobs = true where in the example this is false (Png plot doesn't support batch jobs):

void IPrintManagerDocsExample()
{
    IPrintManager printManager = PrintManagerProxy.GetLocalPrintManager();

    IPrinter printer = printManager.CreatePrinter();
    printer.InitializeFromPltcfgFile(new FileSpec(@"c:\png.pltcfg"));

    IPrinterForm printerFormAnsiA = printer.FindFormByName("ANSI A");

    IPrintSet printSet = printManager.CreatePrintSet();
    printSet.InitializeFromPrinter(printer);
    printSet.UseWorkerMicroStation = false; //The magic sauce that makes MicroStation not crash

    IPrintDefinition[] printDefinitions = printSet.CreatePrintDefinitions(new FileSpec(Session.Instance.GetActiveDgnFile().GetFileName()), null);

    foreach (IPrintDefinition printDefinition in printDefinitions)
    {
        ICadPrintDefinition cadPrintDefinition = printDefinition as ICadPrintDefinition;
        cadPrintDefinition.PrinterForm = printerFormAnsiA;
        cadPrintDefinition.Maximize();
    }

    IFolder folder = printSet.CreateFolder(@"TempFolder");
    printSet.Items.Add(folder);

    folder.Items.AddRange(printDefinitions);

    PublishingParams publishingParams = new PublishingParams();

    publishingParams.UseSeparateJobs = true;
    publishingParams.OutputFspec = new FileSpec(@"C:\temp\TestMethod.png", true);
    printSet.Publish(publishingParams);

    printSet.Close();
    printer.Release();
}

And the png.pltcfg (created using the Edit printer driver configurartion):

<PrinterConfiguration xmlns="PrinterConfiguration.01.04">
    <DisplayLabel>SEED_PNG</DisplayLabel>
    <Visible>1</Visible>
    <BorderIncludeFileName>False</BorderIncludeFileName>
    <BorderOutlineIsOn>True</BorderOutlineIsOn>
    <LORIPJpegQuality>75</LORIPJpegQuality>
    <Programs />
    <HonorRasterTransparency>2</HonorRasterTransparency>
    <ResolutionUnits>6</ResolutionUnits>
    <BorderIncludeDateTime>False</BorderIncludeDateTime>
    <ScaleAdjustmentFactor>1,1,0</ScaleAdjustmentFactor>
    <EnableOutputWidth>2</EnableOutputWidth>
    <DefaultLineCap>1</DefaultLineCap>
    <RasterParametersMonoAsIs>False</RasterParametersMonoAsIs>
    <MoveMode>2</MoveMode>
    <StartPlotAction>0</StartPlotAction>
    <DriverOutputMode>0</DriverOutputMode>
    <DefaultPrintFileExtension>png</DefaultPrintFileExtension>
    <BorderIncludeModelName>False</BorderIncludeModelName>
    <BorderPen>1</BorderPen>
    <RasterParametersQuality>100</RasterParametersQuality>
    <Commands />
    <OleParametersRasterize>2</OleParametersRasterize>
    <RasterizeUsingBands>2</RasterizeUsingBands>
    <BorderTextHeightCM>0.254</BorderTextHeightCM>
    <FontMaps />
    <FenceOutlineIsOn>False</FenceOutlineIsOn>
    <CropRasterTransparency>2</CropRasterTransparency>
    <EndPlotAction>0</EndPlotAction>
    <SymbolAssigns />
    <EnableDriverClipping>2</EnableDriverClipping>
    <BorderTextOffsetCM>0,0,0</BorderTextOffsetCM>
    <Styles>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>0.35 1.05</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>1.75 1.05</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>4.2 1.4</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>2.8 1.05 0.7 1.05</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>1.4 1.4</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>2.1 0.7 0.7 0.7 0.7 0.7</RunLengths>
            <Units>4</Units>
        </Style>
        <Style>
            <NoHardware>False</NoHardware>
            <RunLengths>2.8 0.7 1.4 0.7</RunLengths>
            <Units>4</Units>
        </Style>
    </Styles>
    <DefaultNumCopies>1</DefaultNumCopies>
    <LevelOfDetailMode>1</LevelOfDetailMode>
    <RasterParametersPrintRaster>True</RasterParametersPrintRaster>
    <ResolutionDotsPerUnit>100,100,0</ResolutionDotsPerUnit>
    <AutoOpenPlotFile>False</AutoOpenPlotFile>
    <DefaultColorMode>2</DefaultColorMode>
    <CustomProperties />
    <ColorMaps>
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap />
        <ColorMap>
            <UseDesignBackgroundColor>True</UseDesignBackgroundColor>
        </ColorMap>
    </ColorMaps>
    <SupportsPaths>2</SupportsPaths>
    <BorderWidthCM>0.025</BorderWidthCM>
    <StrokeRaster>2</StrokeRaster>
    <RasterParametersContrast>0</RasterParametersContrast>
    <DefaultPrintFileAutoOverwrite>False</DefaultPrintFileAutoOverwrite>
    <FenceOutlinePen>1</FenceOutlinePen>
    <PlotterModel>loriprgb</PlotterModel>
    <AutoCenter>False</AutoCenter>
    <Forms>
        <Form>
            <DisplayName>ISO A0</DisplayName>
            <Size>1189,841,0</Size>
            <Units>4</Units>
        </Form>
        <Form>
            <DisplayName>ISO A1</DisplayName>
            <Size>841,594,0</Size>
            <Units>4</Units>
        </Form>
        <Form>
            <DisplayName>ISO A2</DisplayName>
            <Size>594,420,0</Size>
            <Units>4</Units>
        </Form>
        <Form>
            <DisplayName>ISO A3</DisplayName>
            <Size>420,297,0</Size>
            <Units>4</Units>
        </Form>
        <Form>
            <DisplayName>ISO A4</DisplayName>
            <Size>297,210,0</Size>
            <Units>4</Units>
        </Form>
        <Form>
            <DisplayName>Arch E1</DisplayName>
            <Size>42,30,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>Arch E</DisplayName>
            <Size>48,36,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>Arch D</DisplayName>
            <Size>36,24,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>Arch C</DisplayName>
            <Size>24,18,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>Arch B</DisplayName>
            <Size>18,12,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>Arch A</DisplayName>
            <Size>12,9,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>ANSI E</DisplayName>
            <Size>44,34,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>ANSI D</DisplayName>
            <Size>34,22,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>ANSI C</DisplayName>
            <Size>22,17,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>ANSI B</DisplayName>
            <Size>17,11,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>ANSI A</DisplayName>
            <Size>11,8.5,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>1280X1024</DisplayName>
            <Size>12.8,10.24,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>1024X768</DisplayName>
            <Size>10.24,7.68,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>800X600</DisplayName>
            <Size>8,6,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>640X480</DisplayName>
            <Size>6.4,4.8,0</Size>
            <Units>6</Units>
        </Form>
        <Form>
            <DisplayName>MAX</DisplayName>
            <Size>16,16,0</Size>
            <Units>6</Units>
        </Form>
    </Forms>
    <LORIPFormat>2</LORIPFormat>
    <RasterParametersGrayscale>False</RasterParametersGrayscale>
    <WeightMaps>
        <WeightMap>
            <Width>0.169</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>0.375</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>0.5</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>0.625</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>0.75</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>0.875</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.125</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.25</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.375</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.5</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.625</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.75</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>1.875</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.125</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.25</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.375</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.5</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.625</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.75</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>2.875</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.125</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.25</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.375</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.5</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.625</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.75</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>3.875</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>4</Width>
            <Units>4</Units>
        </WeightMap>
        <WeightMap>
            <Width>4.125</Width>
            <Units>4</Units>
        </WeightMap>
    </WeightMaps>
    <DefaultPrintFileExtensionAutoIncrement>False</DefaultPrintFileExtensionAutoIncrement>
    <ReplaceTransMaskWithTransColor>2</ReplaceTransMaskWithTransColor>
    <DefaultLineJoin>4</DefaultLineJoin>
    <CurveTolerance>1</CurveTolerance>
    <RasterParametersBrightness>0</RasterParametersBrightness>
    <DefaultPrintFileName>$(MS_PLTFILES)$(basename(_DGNFILE))-$(MS_PLTMODELNAME)<autoInc?prefix=-?digits=3?base=0></DefaultPrintFileName>
    <RollOrientation>0</RollOrientation>
    <PlotTo3D>False</PlotTo3D>
    <MinimumLevelOfDetail>3</MinimumLevelOfDetail>
    <BorderIsOn>False</BorderIsOn>
    <AutoRotateDir>1</AutoRotateDir>
    <MaximumMiterAngleDeg>90</MaximumMiterAngleDeg>
    <VersionMajor>1</VersionMajor>
    <OptimizeRasterColorDepth>2</OptimizeRasterColorDepth>
    <MergeBackgroundRasters>1</MergeBackgroundRasters>
    <PrintPoints>True</PrintPoints>
    <VersionMinor>4</VersionMinor>
    <Driver>LORIP</Driver>
    <Comments>SEED</Comments>
    <DefaultPenTableFileName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
    <DefaultDesignScriptFileName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
    <PrintStyleName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
    <LORIPfullSheet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
    <RequiredOrientation>0</RequiredOrientation>
</PrinterConfiguration>


When running this code printSet.Publish(publishingParams); gets executed and will start publishing, however after a couple of seconds the following exceptions gets thrown, crashing the running MicroStation instance:
System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'

This exception was originally thrown at this call stack:
    Bentley.MstnPlatformNET.Print.PrintFoundation.OutputToMessageCenter(Bentley.MstnPlatformNET.Print.IUserMessage)
    Bentley.MstnPlatformNET.Print.PrintSet.InvokeUserMessageEvent(Bentley.MstnPlatformNET.Print.IUserMessage)
    Bentley.MstnPlatformNET.Print.MicroStationEngine.InvokeUserMessageEvent(Bentley.MstnPlatformNET.Print.IUserMessage)
    System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(object, object[], out object[])
    System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(ref System.ServiceModel.Dispatcher.MessageRpc)
    System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(ref System.ServiceModel.Dispatcher.MessageRpc)
    System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(ref System.ServiceModel.Dispatcher.MessageRpc)
    System.ServiceModel.Dispatcher.MessageRpc.Process(bool)
    System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(System.ServiceModel.Channels.RequestContext, bool, System.ServiceModel.OperationContext)
    System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(System.ServiceModel.Channels.RequestContext, System.ServiceModel.OperationContext)
    ...
    [Call Stack Truncated]

Looking at the running processes I can see that a MicroStation process is still running. If I don't interrupt this process and wait about a minute the plot will still be generated, despite the crash of the initial instance.

When I use the Pdf driver this behavior doesn't happen.

If I change the code creating the PrintSet to include the line printSet.UseWorkerMicroStation = false; after initialization of the PrintSet, MicroStation will not crash and create the plot using the current MicroStation instance.

Is this a bug within the printing classes, or some weird incompatibility between my Png PltCfg and the plotter?

Regards,
Remy

This is a continuation of a previous question asked here: [CE 10.16.02.34] C# equivalent of PrintDescriptionRef - MicroStation Programming Forum - MicroStation Programming - Bentley Communities