我正在尝试为我的桌面编写一个随机壁纸下载器。 代码在第一次下载时工作正常,但挂起并抛出异常 第二次尝试。我尝试了客户端,并从一个新的Web客户端开始。 我也尝试过没有处置。提前谢谢。
public class ChangeWallpaper
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
public static void Main()
{
Random fileNumber = new Random();
string pathStart = "http://www.starcraft2.com/images/screenshots/ss";
string pathEnd = "-hires.jpg";
while (true) //forever loop
{
string randomFile = fileNumber.Next(1, 126).ToString();
WebClient Client = new WebClient();
//OK FIRST TIME -> THROWS EXCEPTION ON SECOND ATTEMPT!
Client.DownloadFile(pathStart + randomFile + pathEnd, "pic.jpg");
Client.Dispose(); //tried removing
Bitmap bm = new Bitmap(Image.FromFile("pic.jpg"));
bm.Save("pic.bmp", ImageFormat.Bmp);
bm.Dispose(); //tried removing - no help
SystemParametersInfo(20, 0, "pic.bmp", 0x01 | 0x02);
Thread.Sleep(60000); // Sleep for 1 minute
}
}
}
答案 0 :(得分:2)
尝试更改文件名。当你第二次尝试时,很可能pic.jpg或pic.bmp仍然有文件锁定。每次都选择一个更独特的文件名。
Client.DownloadFile(pathStart + randomFile + pathEnd, "pic.jpg");
可能无法覆盖pic.jpg。对于测试,尝试在循环期间递增数字(pic1,pic2等)。您可以随时提出更好的命名方案。