WebClient在第二次下载尝试时抛出异常

时间:2010-01-22 20:29:13

标签: c# .net

我正在尝试为我的桌面编写一个随机壁纸下载器。 代码在第一次下载时工作正常,但挂起并抛出异常 第二次尝试。我尝试了客户端,并从一个新的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
        }
    }
}

1 个答案:

答案 0 :(得分:2)

尝试更改文件名。当你第二次尝试时,很可能pic.jpg或pic.bmp仍然有文件锁定。每次都选择一个更独特的文件名。

 Client.DownloadFile(pathStart + randomFile + pathEnd, "pic.jpg");

可能无法覆盖pic.jpg。对于测试,尝试在循环期间递增数字(pic1,pic2等)。您可以随时提出更好的命名方案。