He reducido a este método, pero no entiendo por qué está bloqueando el archivo. Creo que podría utilizar algo como¿por qué este código bloquea mis archivos?
using(something)
{
//do stuff here
}
pero no estoy seguro de que habría A) resuelve el problema o B) sea la forma correcta si lo hizo.
¿Alguna idea?
[DllImport("user32.dll", CharSet = CharSet.Auto)]private static extern Int32 SystemParametersInfo(UInt32 action, UInt32 uParam, String vParam, UInt32 winIni);
private static readonly UInt32 SPI_SETDESKWALLPAPER = 0x14;
private static readonly UInt32 SPIF_UPDATEINIFILE = 0x01;
private static readonly UInt32 SPIF_SENDWININICHANGE = 0x02;
private void SetWallpaper(string path)
{
try
{
Image imgInFile = Image.FromFile(path);
imgInFile.Save(SaveFile, ImageFormat.Bmp);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 3, SaveFile, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
catch
{
MessageBox.Show("error in setting the wallpaper");
}
}
#
código actualizado
private void SetWallpaper(string path)
{
if (File.Exists(path))
{
Image imgInFile = Image.FromFile(path);
try
{
imgInFile.Save(SaveFile, ImageFormat.Bmp);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 3, SaveFile, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
catch
{
MessageBox.Show("error in setting the wallpaper");
}
finally
{
imgInFile.Dispose();
}
}
}
También me lanzo en: if (File.Exists (camino)) {..} – Nippysaurus
@Nippysaurus: Me gustaría SetWallpaper() para lanzar, a mí mismo. –
supongo que mi pregunta es cómo es eso diferente de cuando el método se terminó de ejecutar. ¿No debería eliminarse automáticamente la imagen después de que se complete? – Crash893