2015-09-08 14 views
8

Próbowałem zrobić prostą aplikację, która może pobrać listę adresów URL z YouTube i pobrać je jako pliki MP3 do określonego folderu. Jednak nie pobiera plików. (Byłem w tym w porządku, ale domyślam się, że brak praktyki w lecie go zepsuł)Jak debugować kod asynchroniczny?

Przede wszystkim kod: https://gist.github.com/ericBG/159debbcdb606647afb8 (Wiem, że to nie jest dokładnie minimalne, ale jest dość małe i jestem nie jestem pewien, gdzie leży problem)

Więc, co się dzieje, to ma jakieś wyjście coś takiego:

Enter folder path where you would like output .mp3 files to be saved: 
G:\MusicTemp 
Enter any youtube videos you would like downloaded: 
https://www.youtube.com/watch?v=N6eUF30HXWY 
API requested for http://youtube.com/watch?v=N6eUF30HXWY 
Downloading API response for http://youtube.com/watch?v=N6eUF30HXWY 
Song requested for http://youtube.com/watch?v=N6eUF30HXWY 
Completed download. 
Enter any youtube videos you would like downloaded: 

(film jest po prostu najkrótsza wideo łatwo znaleźć btw) i plik pobrany jako "Tytuł wideo" .mp3 na ścieżce.

Co się dzieje, to jednak:

Enter folder path where you would like output .mp3 files to be saved: 
G:\MusicTemp 
Enter any youtube videos you would like downloaded: 
https://www.youtube.com/watch?v=N6eUF30HXWY 
API requested for http://youtube.com/watch?v=N6eUF30HXWY 
Downloading API response for http://youtube.com/watch?v=N6eUF30HXWY 
Completed download. 
Enter any youtube videos you would like downloaded: 

a plik nie znajduje się na ścieżce.

Mam przeczucie, że jest to spowodowane niektórymi z moich asynchronicznych programów. Jednak nie jestem pewien, jak to debugować, ponieważ nie wiem, które narzędzia pozwalają mi przejść i zobaczyć, gdzie popełniłem błąd, a następnie poprawić. Czy debugger społeczności VS pozwoliłby mi dobrze debugować ten kod? Dziękuję Ci!

+0

Czy otrzymujesz wyjątek? Czy masz uprawnienia do zapisu do katalogu? –

+0

Jak stworzyłeś istniejący kod? Z jakiego IDE korzystałeś? –

+0

@ArghyaC Bez wyjątków, po prostu część kodu jest pomijana. Zdecydowanie mam pozwolenie na zapis do katalogu. –

Odpowiedz

8

Kopia komentarza ponieważ jest to odpowiedź na pytanie (nie jest rozwiązaniem problemu code):

można debugować go jak normalnego kodu. Ustaw krok użycia punktu przerwania lub przejdź i przejdź przez kod. Jeśli masz wiele wątków, może to być problem, ponieważ debuger przeskakuje z jednego wątku do drugiego. Jeśli chcesz tylko debugować jeden wątek, przejdź do okna wątku (debugowanie/okna/wątki) znajdź bieżący (strzałka yello) i zablokuj wszystkie pozostałe wątki.

1

Prawdopodobnie wystąpił błąd podczas zapisywania lub pobierania pliku, ale użytkownik nie sprawdza go.

Kod:

.ContinueWith(t => Console.WriteLine("Completed download."))); 

należy sprawdzić, czy poprzednik taks ma błąd.

.ContinueWith(t => 
       { 
       if(t.Exception != null) 
       { 
        // log error 
       } 
       else 
       { 
        Console.WriteLine("Completed download."))); 
       }); 

Zadanie zewnętrzne dodane do listy reprezentuje ukończenie kontynuacji, więc zakończy się pomyślnie, nawet jeśli pobieranie nie powiodło się.

+0

To wygląda na rozwiązanie problemu, który ma program. Pytanie brzmi, jak to debugować. –

+0

Ma wyjątek. Dziękuję Ci! –