2013-04-19 3 views
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)); 
     } 
    } 
} 

запуска Это (окна формы приложение) # программы C при пропускании файла URL загрузки как параметры.

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

Но загрузка или загрузка полных сообщений не отображаются в окне командной строки. Где я ошибаюсь?

+0

Что отображается в консоли? Какой тип проекта? – SLaks

+0

Тип проекта - это приложение для окон. (Должно быть) Ничего не отображается в консоли – Elshan

+0

. Можете ли вы показать нам метод «Главная»? –

ответ

2

Приложения для форм Windows не имеют консолей.

Если вы хотите увидеть вывод консоли, измените тип проекта на Консольное приложение.

+0

Это работает! Но потом появятся новые проблемы. * При запуске программы GUI откроется окно cmd.exe – Elshan

+1

@ Elshan: Это поведение по дизайну. У вас не может быть половины консоли. – SLaks

+1

См. Http://blogs.msdn.com/b/oldnewthing/archive/2009/01/01/9259142.aspx – SLaks

1

Если ваш проект задан как Windows Application Form, тогда измените его на Console Application, так как вам нужна консоль, чтобы отобразить прогресс.


enter image description here

Убедитесь, что выходной тип Console Application он должен показать прогресс правильно после этого!

+0

Есть ли какой-либо другой способ указать прогресс в cmd, потому что для этой программы требуется как командная строка, так и графический интерфейс. – Elshan

1

Если вам нужно показать прогресс, но в форме Windows, рассмотрите возможность использования элемента управления ProgressBar. Вы не можете использовать Console, как уже указывали другие.

+0

Хорошо, я постараюсь. – Elshan

1

Winform не предлагает консоль вам по умолчанию, если вы просто хотите использовать «консоль» для тестирования/мониторинга, попробуйте:

Debug.WriteLine(...); 

Вы увидите результаты в окне вывода VisualStudio.