C# 下载文件异步不';无法下载文件,但已触发已完成事件?

C# 下载文件异步不';无法下载文件,但已触发已完成事件?,c#,webclient,webclient-download,downloadfileasync,C#,Webclient,Webclient Download,Downloadfileasync,好吧,我在这里不知所措。我试图下载一个jar文件,然后制作一个运行它的批处理文件。我以前可以用我的代码下载这个文件一次,但是现在完成的事件立即触发(我想,因为它里面的代码正在运行。很抱歉,我对C#是新手),但没有下载任何文件。我添加了一个新的按钮,除了下载代码什么都没有,文件就在那里,但它只是显示为0KB。我的当前代码在Fiddler中甚至没有显示任何内容。我正在使用IP地址跳过DNS检查,并将代理设置为null。(我在某个地方读到这样做可以阻止它挂起。我想,这是关于web代理自动检测的。)我可

好吧,我在这里不知所措。我试图下载一个jar文件,然后制作一个运行它的批处理文件。我以前可以用我的代码下载这个文件一次,但是现在完成的事件立即触发(我想,因为它里面的代码正在运行。很抱歉,我对C#是新手),但没有下载任何文件。我添加了一个新的按钮,除了下载代码什么都没有,文件就在那里,但它只是显示为0KB。我的当前代码在Fiddler中甚至没有显示任何内容。我正在使用IP地址跳过DNS检查,并将代理设置为null。(我在某个地方读到这样做可以阻止它挂起。我想,这是关于web代理自动检测的。)我可以验证下载链接(除非你需要,否则我不会在这里显示)是真实的,只需在web浏览器中打开即可下载文件。总之,下面是我的代码片段:

        WebClient wc1 = new WebClient();
        wc1.DownloadFileCompleted += new AsyncCompletedEventHandler(wc1_DownloadFileCompleted);
        wc1.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc1_DownloadProgressChanged);

        if (cmboboxVersion.SelectedText == ...)
        {
            stsprgsbar.Style = ProgressBarStyle.Continuous;

            stslblStaus.Text = "Downloading files...";

            wc1.DownloadFileAsync(new Uri(...), @txtboxFolder.Text + "\\jarfile.jar");

            FileStream fs = new FileStream(@txtboxFolder.Text + "\\batfile.bat", FileMode.Create, FileAccess.ReadWrite);

            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(...);
            sw.Close();

            fs.Close();


        }
        else if (cmboboxVersion.SelectedText == ...)
        {
            stsprgsbar.Style = ProgressBarStyle.Continuous;

            stslblStaus.Text = "Downloading files...";

            wc1.DownloadFileAsync(new Uri(...), @txtboxFolder.Text + "\\jarfile.jar");

            FileStream fs = new FileStream(@txtboxFolder.Text + "\\batfile.bat", FileMode.Create, FileAccess.ReadWrite);

            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(...);
            sw.Close();

            fs.Close();
        }
        else
        {
            stsprgsbar.Style = ProgressBarStyle.Continuous;

            stslblStaus.Text = "Downloading files...";

            wc1.DownloadFileAsync(new Uri(...), @txtboxFolder.Text + "\\jarfile.jar");

            FileStream fs = new FileStream(@txtboxFolder.Text + "\\batfile.bat", FileMode.Create, FileAccess.ReadWrite);

            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(...);
            sw.Close();

            fs.Close();
        }
    }

    public void wc1_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        stsprgsbar.Value = e.ProgressPercentage;
    }

    public void wc1_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        string BatPath = @txtboxFolder.Text + "\\batfile.bat";
        stsprgsbar.Style = ProgressBarStyle.Marquee;
        stslblStaus.Text = "Generating files...";
        ProcessStartInfo pro = new ProcessStartInfo(BatPath);
        //pro.CreateNoWindow = true;
        Process.Start(pro);

    }

好吧,这似乎就是我想要的。我的代码使用了错误的文件名,但我可以解决这个问题。但我想问一个简单的问题,这是如何实现的?编辑:好的,所以我的代码选择什么下载链接不起作用,所以它总是下载最后一个文件,但通过做你刚才做的,它奇迹般地起作用。现在我把它拿走了,它还能用。无论如何,谢谢。它会在你的本地计算机上下载jarfile.jar哦,哇。我很笨。我只是设置了文件名,并没有把它放在任何地方。我上次下载时使用的代码在我发布到这里之前就被弄乱了。非常感谢。不客气,经常会发生一些事情。最重要的是要坚持我的朋友;-)
wc1.DownloadFileAsync(new Uri(...), @txtboxFolder.Text + "\\jarfile.jar", @"c:\jarfile.jar"););