Процесс не может получить доступ к ошибке файла с помощью System.Web.UI.DataVisualization.Построение графиков

#asp.net #charts

#asp.net #Диаграммы

Вопрос:

Я использую диаграммы из 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>
  

Большую часть времени это работает хорошо. Но иногда пользователи получают исключение:

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

Это случается очень редко, но это так.
Кто-нибудь сталкивался с подобной проблемой?

Комментарии:

1. Хорошо. Я только что добавил код, который присваивает уникальные имена файлам и очищает старые. новые файлы заблокированы новее.

Ответ №1:

Пожалуйста, предоставьте код для дополнительного анализа.

Но на данный момент можно предположить, что файл должен быть в открытом состоянии во время попытки записи / чтения. Это должно происходить в редких случаях, поскольку файл может быть в процессе и, возможно, не завершил свой процесс. Выполнение вашего кода было достаточно быстрым, чтобы попасть в такой тип совпадения.

Комментарии:

1. Я предоставил код. Хорошо, если файл в процессе, как я могу это проверить?