2016-09-02 15 views
6

Witam Pracuję nad platformą .NET 4.5. Piszę program do pobierania dla mojej aplikacji. Oto kod:Wstrzymywanie i wznawianie pobierania WPF

private void Download(Dictionary<int, FileAndLinkClass> MyLinks) 
    { 
     ApplicationDownloadThread = new Thread(() => 
     { 
      foreach (KeyValuePair<int, FileAndLinkClass> item in MyLinks) 
      { 
       fileNo++; 
       WebClient myWebClient = new WebClient(); 
       myWebClient.DownloadProgressChanged += MyWebClient_DownloadProgressChanged; 
       myWebClient.DownloadFileCompleted += MyWebClient_DownloadFileCompleted; 
       // Download the Web resource and save it into the current filesystem folder. 
       string downloadedFileAdress = System.IO.Path.Combine(fileLocation, $"{item.Value.FileName}"); 
       myWebClient.DownloadFileAsync(new Uri(item.Value.Link), downloadedFileAdress); 
       while (myWebClient.IsBusy) 
       { 

       } 
      } 
     }); 

     ApplicationDownloadThread.IsBackground = false; 
     ApplicationDownloadThread.Start(); 

     //UnZipAndCreateUpdatePackage(MyLinks); 

    } 

Teraz chcę kliknij na przycisk pobierania musi się zatrzymać i co innego przycisku kliknij pobieranie muszą być wznowione. Próbowałem pracować z właściwością .set() zdarzenia AutoReset i jego właściwością .Reset(), ale nie działało. Potrzebuję pomocy. Mój kod kliknięcia przycisku to:

private AutoResetEvent waitHandle = new AutoResetEvent(true); 

    private void StartDownloadBtn_Click(object sender, RoutedEventArgs e) 
    { 
     waitHandle.Set(); 

    } 

    private void StopDownloadBtn_Click(object sender, RoutedEventArgs e) 
    { 
     waitHandle.Reset(); 

    } 

Próbowałem również tego linku How to pause/suspend a thread then continue it?. nic się nie dzieje

Przeszedłem także przez Adding pause and continue ability in my downloader, ale nie udało mi się włączyć rozwiązania do powyższego kodu, ponieważ aktualizuję również postęp pobierania w interfejsie użytkownika.

+0

Próbowałeś czegoś takiego: http://stackoverflow.com/questions/2430930/how-to-pause-suspend-a-thread-then- continue-it – bakala12

+0

@ bakala12 tak Próbowałem powyższych. Brak wyników –

+0

Prawdopodobny duplikat opcji [Dodawanie pauzy i kontynuacja w moim programie do pobierania] (http://stackoverflow.com/questions/15995705/adding-pause-and-continue-ability-in-my-downloader) – slawekwin

Odpowiedz

1

Zrobiłem więcej kopania, najwyraźniej jeśli dla ciebie Adding pause and continue ability in my downloader nie było jasne, ponieważ używa danych strumienia bajtów w klasie. Może mógłbyś sprawdzić poniższy link, zapewnia on również rozwiązanie VS na WPF do pobierania rozszerzeń plików .zip z funkcjami pauzy/wznowienia/zatrzymania. Daj mi znać, jeśli potrzebujesz dodatkowej pomocy.


Link do artykułu CodeProject: C# .NET Background File Downloader

Powiązane problemy