Je rencontre un problème dans WPF lorsqu'une fenêtre ne libère pas son verrou de fichier sur le fichier image d'arrière-plan après la fermeture, avant qu'une autre partie de l'application tente d'écrire sur l'image.Suppression de l'image d'arrière-plan d'une fenêtre WPF
À titre d'exemple; disons que j'ai une application WPF composée de 3 fenêtres, 1 fenêtre de sélection "menu" et 2 autres. Les deux fenêtres créent un ImageBrush
en utilisant un BitmapImage
comme le ImageSource
(le même image).
fenêtre A a un bouton qui lorsqu'il est pressé, fait défiler les images de fond disponibles en les copiant sur chaque fichier utilisé comme ImageSource
et la création d'une nouvelle ImageBrush
et le réglage de la Window.Background
à la nouvelle brosse originale. La fenêtre B utilise simplement ImageBrush
pour dessiner le Window.Background
.
Si la fenêtre A est lancée, que les arrière-plans sont activés, fermés et que la fenêtre B est lancée, tout va bien.
Si la fenêtre B est lancée, fermée, la fenêtre A est lancée et les arrière-plans l'activent. "Le processus ne peut pas accéder au fichier 'C: \ Backgrounds \ Background.png' car il est utilisé par un autre processus." Le processus ne peut pas accéder au fichier 'C: \ Backgrounds \ Background.png'.
Donc, la fenêtre B doit encore se tenir en quelque sorte !? J'ai essayé de faire un GC.Collect(); GC.WaitForPendingFinalizers();
pour voir si cela résout le problème mais ce n'est pas le cas.
C'est génial, merci les deux! – Siyfion