Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Unterschied WinForm- und Konsolenanwendung bei API Abfrage
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Unterschied WinForm- und Konsolenanwendung bei API Abfrage

beantworten | zitieren | melden

Ich möchte einen Youtube Downloader bauen mit der Youtube API. Der Beispielcode funktioniert in der Konsolenanwendung auch sehr gut, jedoch möchte ich das eher in einer WinForm verwenden. Okay... Button genommen und verlinkte Klasse aufgerufen... Funktioniert teilweise... wenn er die Anfrage schickt, passiert nichts und er bleibt stehen.


 static void Main(string[] args)
        {
            Search s = new Search();
            s.Searchword("Goole");
        }
        [STAThread]
        public void Searchword(string searchword)
        {
            try
            {
                new Search().Run(searchword).Wait();
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + e.Message);
                }
            }
        }

        public async Task Run(string searchword)
        {
            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = "mein Geheimnis",
                ApplicationName = this.GetType().ToString()// "YoutubeApiSearch.Search" //
            });

            var searchListRequest = youtubeService.Search.List("snippet");
            searchListRequest.Type = "video";
            searchListRequest.Q = searchword; // Replace with your search term.
            searchListRequest.VideoLicense = SearchResource.ListRequest.VideoLicenseEnum.CreativeCommon;
            searchListRequest.MaxResults = 50;

            // Call the search.list method to retrieve results matching the specified query term.
            var searchListResponse = await searchListRequest.ExecuteAsync();
            ....

In der Konsolenanwendung geht er problemlos über die letzte Zeile und empfängt Ergebnisse. Die WinForm-Anwenung ruft identisch die Klasse auf, kommt aber über die letzte Zeile nicht drüber weg.


private void get_Button_Click(object sender, EventArgs e)
        {
            Search s = new Search();
            s.Searchword("Google");

Ich muss gestehen, dass ich nicht mal eine Idee habe was der Unterschied ist.
private Nachricht | Beiträge des Benutzers
CoLo
myCSharp.de - Member



Dabei seit:
Beiträge: 232

beantworten | zitieren | melden

tut wohl nicht viel zur Sache, aber ist das so gewollt? Zitat:


  [STAThread]
  public void Searchword(string searchword)

Ich kenne STAThread sonst nur beim Einstiegspunkt bzw. der Main Methode.

Wird get_Button_Click aufgerufen bzw. ist das Ereignis abboniert?
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Fehler gefunden... Das Zauberwort heißt "async" und "await"


private async void get_Button_Click(object sender, EventArgs e)
        {
            try
            {
                await Run("google");
            }
            catch (AggregateException ex)
            {
                System.Diagnostics.Debug.WriteLine("Error: " + ex.Message);
            }    
        }
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15695
Herkunft: BW

beantworten | zitieren | melden

Eigentlich ist folgendes das Zauberwort: [FAQ] Warum blockiert mein GUI?
async/await ist nur ein Hilfsmittel dabei....
private Nachricht | Beiträge des Benutzers