The process cannot access the file error with Syst

2019-09-02 20:54发布

问题:

I use charts from System.Web.DataVisualization.

<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>
...
<asp:Chart ImageType="Png" runat="server" ID="chartStatComp" Palette="BrightPastel"
    ImageLocation="~/CRM/Reports/chartStatComp_#SEQ(100,10)" ImageStorageMode="UseImageLocation"
    Width="620" Height="300">
    <ChartAreas>
        <asp:ChartArea Name="MainChartArea">
        </asp:ChartArea>
    </ChartAreas>
    <Series>
        <asp:Series ChartArea="MainChartArea" ChartType="Pie" XValueType="String" YValueType="Int32"
            CustomProperties="DoughnutRadius=25, PieDrawingStyle=Concave, CollectedLabel=Other, MinimumRelativePieSize=20"
            XValueMember="StateDescription" YValueMembers="CNT" Legend="Legend" IsVisibleInLegend="true"
            IsValueShownAsLabel="true">
        </asp:Series>
    </Series>
    <Legends>
        <asp:Legend LegendStyle="Table" Name="Legend" Alignment="Near"
            TitleAlignment="Near">
            <CellColumns>
                <asp:LegendCellColumn Text="Color" ColumnType="SeriesSymbol" />
                <asp:LegendCellColumn Text="#LEGENDTEXT" ColumnType="Text" Alignment="TopLeft" HeaderText="State" />
                <asp:LegendCellColumn Text="#VAL" ColumnType="Text" Name="Cnt" Alignment="TopLeft"
                    HeaderText="Count" />
                <asp:LegendCellColumn Text="#PERCENT" ColumnType="Text" Name="Percentage" Alignment="TopLeft"
                    HeaderText="%" />
            </CellColumns>
        </asp:Legend>
    </Legends>
</asp:Chart>

It works well most of the time. But sometimes users gets the exception:

System.IO.IOException: The process cannot access the file '~\Reports\chartStatComp_000001.png' because it is being used by another process.

Its happens very rare but it does. Does anyone faced with similar problem?

回答1:

Please provide the code for more analysis .

But at this point it can be assumed that the file must be in open state at the time you try to write/read. It must be happening in rare cases as the file might be in process and may have not finished its process. Your code execution was fast enough to get into such type of coincidence.