Ergebnis 1 bis 5 von 5
  1. #1
    W32.FunLove
    Registriert seit
    17.10.2011
    Beiträge
    142

    Standard [C#] async webrequest

    Hallo,

    ich möchte folgendes Consolen-Programm gerne in eine WPF-Anwendung ändern. Dazu möchte ich den Webrequest asynchron ausführen. Leider finde ich kein Tutorial, in dem mir leicht verständlich erklärt wird, wie es umschreiben muss. Ich bin gerade erst in c# eingestiegen und habe bis jetzt auch nichts asynchron programmiert. (Erfahrungen in anderen Sprachen sind vorhanden (Python, c, php))
    Wer kann helfen?

    Code:
    using System;
    using System.Net;
    
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Requesting");
    
    
                WebRequest r = null;
                try
                {
                    r = WebRequest.Create("https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe");
                }
                catch (UriFormatException e)
                {
                    Console.WriteLine("Fehler: " + e.Message);
                }
    
    
                // Console.WriteLine("Content-Type: " + r?.GetResponse().ContentType);
                Console.WriteLine("Length: " + r?.GetResponse().ContentLength);
    
    
                Console.ReadLine();
            }
        }
    }

  2. #2
    Tron Avatar von hoschi111
    Registriert seit
    11.12.2007
    Beiträge
    888

    Standard AW: [C#] async webrequest

    Code:
    private void btnDownload_Click(object sender, EventArgs e)
    {
      WebClient webClient = new WebClient();
      webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
      webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
      webClient.DownloadFileAsync(new Uri("http://mysite.com/myfile.txt"), @"c:\myfile.txt");
    }
    
    private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
      progressBar.Value = e.ProgressPercentage;
    }
    
    private void Completed(object sender, AsyncCompletedEventArgs e)
    {
      MessageBox.Show("Download completed!");
    }
    In case of fire: 1. git commit, 2. git push, 3. git out!

  3. #3
    W32.FunLove
    Registriert seit
    17.10.2011
    Beiträge
    142

    Standard AW: [C#] async webrequest

    Danke für die Antwort.
    Habe es etwas anders gelöst... ich habe in einem Buch bei google-books einen Ansatz gefunden in dem WebRequest.GetResponseAsync() verwendet wird.
    Ich möchte die Datei, auf die der Link zeigt, nicht herunterladen sondern die Größe anzeigen.

    Müsste es in deinem Code nicht private async void btnDownload_Click(object sender, EventArgs e) heißen damit das Fenster während der Verarbeitung nicht hängt?

  4. #4
    Tron Avatar von hoschi111
    Registriert seit
    11.12.2007
    Beiträge
    888

    Standard AW: [C#] async webrequest

    Was geschieht, wenn der Webserver nicht die Größe der Datei mitteilt? (selten, aber soll vorkommen).
    In case of fire: 1. git commit, 2. git push, 3. git out!

  5. #5
    W32.FunLove
    Registriert seit
    17.10.2011
    Beiträge
    142

    Standard AW: [C#] async webrequest

    Dann wird Größe -1 oder "" ausgegeben. Ich habe es geschrieben um zu entscheiden, ob ich einen Download über LTE-Hotspot beginne oder verschiebe, bis DSL verfügbar ist.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •