Laden...

Unterschied WinForm- und Konsolenanwendung bei API Abfrage

Erstellt von digi333 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.771 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 9 Jahren
Unterschied WinForm- und Konsolenanwendung bei API Abfrage

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.

C
224 Beiträge seit 2009
vor 9 Jahren

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?

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 9 Jahren

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);
            }    
        }
16.807 Beiträge seit 2008
vor 9 Jahren

Eigentlich ist folgendes das Zauberwort: [FAQ] Warum blockiert mein GUI?
async/await ist nur ein Hilfsmittel dabei....