异步文件下载进度未显示在控制台窗口中

时间:2013-04-19 14:50:35

标签: c# .net c#-4.0

using System.Windows.Forms;
using System.Net;
using System;
using System.ComponentModel;

namespace FileDownloadUIClient
{
    public partial class Form1 : Form
    {
        string[] arguments;
        public Form1(string[] args)
        {
            InitializeComponent();
            arguments = args;                
            download();
        }
        public void download()
        {
            if (arguments.Length < 0) { this.Close(); }
            else
            {
                WebClient client = new WebClient();
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);                    
                client.DownloadFileAsync(new Uri(arguments[0]), DateTime.Now.Ticks.ToString() +".bin");
            }
        }        
        void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            double bytesIn = double.Parse(e.BytesReceived.ToString());
            double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
            double percentage = bytesIn / totalBytes * 100;
            Console.WriteLine( int.Parse(Math.Truncate(percentage).ToString()));
        }
        void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            Console.WriteLine("Download Completed");
            this.Close();
        }

主要方法:

using System.Windows.Forms;

namespace FileDownloadUIClient
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(args));
        }
    }
}

此(Windows窗体应用程序)C#程序在传递文件下载URL 作为参数时启动。

Ex:
C:\FileDownloadUIClient\bin\Debug>FileDownloadUIClient.exe "http://localhost/myfile.mp4"

但是下载进度或下载完整的消息不会显示在命令提示符窗口中。我错了什么?

4 个答案:

答案 0 :(得分:2)

Windows窗体应用程序没有控制台。

如果要查看控制台输出,请将项目类型更改为控制台应用程序。

答案 1 :(得分:1)

如果您的项目定位为Windows Application Form,则将其更改为Console Application,因为您需要控制台来显示进度。


enter image description here

确保您有输出类型Console Application,之后必须正确显示进度!

答案 2 :(得分:1)

如果您需要在Windows窗体上显示进度,请考虑使用ProgressBar控件。您不能像其他人已经指出的那样使用Console

答案 3 :(得分:1)

默认情况下,Winform不提供控制台,如果您只想使用“console”进行测试/监控,请尝试:

Debug.WriteLine(...);

您将在VisualStudio输出窗口中看到结果。