Announcement

Collapse
No announcement yet.

Event wird nicht ausgelöst

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Event wird nicht ausgelöst

    Hi,
    hab ne kleine Frage.
    Und zwar habe ich folgenden Code:
    Code:
            internal System.Net.WebClient dl = new System.Net.WebClient();
            public frm_Main()
            {
                InitializeComponent();
            }
    
            private void frm_Main_Load(object sender, EventArgs e)
            {
                dl.DownloadFileCompleted += new EventHandler(CompletedHandler);
                if (File.Exists("Jet_Podz.zip"))
                    File.Delete("Jet_Podz.zip");
                dl.DownloadFileAsync(new Uri("http://gamez64.net/downloads/games/Jet_Podz_Final.zip"), "Jet_Podz.zip");
            }
            private void dl_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
            {
                MessageBox.Show("blah");
            }
            public void CompletedHandler(object sender, AsyncCompletedEventArgs e) 
            {
                MessageBox.Show("Test");
            }
    Jedoch bekomme ich immer eine Fehlermeldung:
    Fehler 1 Keine Überladung für "CompletedHandler" stimmt mit dem Delegaten "System.EventHandler" überein. C:\Dokumente und Einstellungen\Benutzer1\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\DManager\Form1.cs 23 41 DManager
    Wie kann ich das lösen?

  • #2
    Code:
                dl.DownloadFileCompleted += new EventHandler(CompletedHandler);
    EventHandler ist ein Delegat mit der Signatur (object sender, EventArgs e).
    Dein CompletedHandler benutzt aber AsyncCompletedEventArgs und nicht einfach EventArgs.

    Lösung
    a.)
    Den richtigen EventHandler mit passender Signatur erzeugen. Z.B. mit dem generischen EventHandler Delegaten dem man den richtigen EventArgs Typen mit gibt.

    Code:
                dl.DownloadFileCompleted += new EventHandler<AsyncCompletedEventArgs >(CompletedHandler);
    b.)
    oder viel einfacher. In dem man den Compiler selbst die passende Signatur feststellen läßt. Man muß nicht zwingen den vollen Syntax verwenden um einen EventHandler zuzuweisen. Man kann den ganzen new EvenHandler ... Ballast einfach weglassen.

    Code:
                dl.DownloadFileCompleted += CompletedHandler;

    Comment


    • #3
      Außerdem hatte er hier schon eine Reihe von Hinweisen bekommen, bis es den Helfern zu bunt wurde. Auch auf OpenBooks wurde dort schon hingewiesen. Jürgen

      Comment

      Working...
      X