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"
但是下载进度或下载完整的消息不会显示在命令提示符窗口中。我错了什么?
答案 0 :(得分:2)
Windows窗体应用程序没有控制台。
如果要查看控制台输出,请将项目类型更改为控制台应用程序。
答案 1 :(得分:1)
如果您的项目定位为Windows Application Form
,则将其更改为Console Application
,因为您需要控制台来显示进度。
确保您有输出类型Console Application
,之后必须正确显示进度!
答案 2 :(得分:1)
如果您需要在Windows窗体上显示进度,请考虑使用ProgressBar
控件。您不能像其他人已经指出的那样使用Console
。
答案 3 :(得分:1)
默认情况下,Winform不提供控制台,如果您只想使用“console”进行测试/监控,请尝试:
Debug.WriteLine(...);
您将在VisualStudio输出窗口中看到结果。