2012-02-08 5 views
4

Я новичок в программировании на C#/WPF/Surface.Удаление файлов, которые использовались в C# LibraryStack в Scatterview

Я использую в ScatterViewItem в LibraryStack в ScatterView:

<Grid Name="DataGrid" Background="LightBlue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
    <Grid.Resources> 
     <DataTemplate x:Key="LibraryItemTemplate"> 
      <Viewbox Stretch="Uniform"> 
       <Image Source="{Binding}" /> 
      </Viewbox> 
     </DataTemplate> 

     <!-- Styles to ensure each library control uses the above defined templates --> 
     <Style TargetType="{x:Type s:LibraryStack}"> 
      <Setter Property="ItemTemplate" Value="{StaticResource LibraryItemTemplate}"/> 
     </Style> 
     <Style TargetType="{x:Type s:LibraryBar}"> 
      <Setter Property="ItemTemplate" Value="{StaticResource LibraryItemTemplate}"/> 
     </Style> 

     <DataTemplate x:Key="itemTemplate"> 
      <Image Source="{Binding [email protected]}"/> 
     </DataTemplate> 
    </Grid.Resources> 
    <s:ScatterView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <s:ScatterViewItem Name="ScatterViewItem1" Background="DarkGray" MinWidth="800" MinHeight="800" 
          Orientation="0.0" CanRotate="False"> 
      <s:LibraryStack Name="LibraryStack1" Background="Transparent" MinWidth="800" MinHeight="800" AllowDrop="True" > 

      </s:LibraryStack> 
     </s:ScatterViewItem> 
    </s:ScatterView> 
</Grid> 

я заполняю библиотеки Stack, установив ObservableCollection к ItemsSource из LibraryStack. ObservableCollection состоит из строк, которые представляют собой пути к изображениям.

ObservableCollection<string> oc = new ObservableCollection<string>(System.IO.Directory.GetFiles(folder)); 
LibraryStack1.ItemsSource = ocs; 

Теперь у меня есть ScatterViewItem со всеми изображениями в нем с перетаскиванием.

Тогда я хочу, чтобы очистить все изображения от LibraryStack/ScatterViewItem и удалить все файлы/изображения в папке:

oc=null; 
LibraryStack1.ItemsSource = null; 
string[] files = Directory.GetFiles(folder); 

foreach (String file in files) 
{ 
    try 
    { 
    File.Delete(file); 
    } 
    catch (Exception f) 
    { 
    Console.WriteLine(f); 
    } 
} 

ScatterViewItem на экране пусто, но всегда находится исключение брошено, удалив файлы (File.Delete(file)):

System.IO.IOException: процесс не может получить доступ к файлу «хуга», так как он используется другим другим процесс. в System.IO .__ Error.WinIOError (Int32 ERRORCODE, String maybeFullPath) на System.IO.File.Delete (String путь) ...

Удаление над FileInfo кидает то же исключение.

Что мне делать?

ответ

0

Попробуйте изменить атрибуты файла, как это, прежде чем удалять их.

File.SetAttributes(file, FileAttributes.Normal); 
File.Delete(file); 
+0

Это вряд ли помогут, это выглядит как вопрос блокировки файла не проблема с правами доступа к файлам –

0

Я вижу два возможных объяснения: -

  1. Другой процесс имеет блокировку на файл (я нахожу OneDrive часто блокирует мой код, чтобы синхронизировать его). Попробуйте использовать Process Explorer, чтобы увидеть, что имеет блокировку на файл (ы)
  2. Вы неосторожно запирающие файлы где-то в вашем коде и блокирующий себя

 Смежные вопросы

  • Нет связанных вопросов^_^