none
Task zugriff auf methode einer anderen page RRS feed

  • Frage

  • Hallo,

    ich habe einen Task der sich innerhalb einer Seite, die in einem Rahmen auf einer anderen Seite ist, befindet. Dieser soll eine Methode( public und die Seite(B) im Rahmen kennt den Handler von der übergeordneten Seite(A)) auf Seite A aufrufen.

    Ich habe den ganzen Prozess schritt für schritt nachverfolgt und offensichtlich scheitert die aufgerufene Methode am setzen von Eigenschaften von UI Elementen auf Seite A. An dieser stelle bricht der Task einfach ab, obwohl er wegen While Schleife kontinuierlich laufen sollte, ohne eine Fehlermeldung anzuzeigen.

    Ich kenne mich noch nicht so gut mit Tasks aus und bitte daher um eine Erklärung des Problems und damit verbundenen Lösungsansätzen. Bitte nicht einfach nur Codezeilen o.ä.

    LG,

    Patrik

    Sonntag, 15. September 2013 20:23

Antworten

  • Hallo,
    verstanden was du vor hast hab ich nicht. Aber wenn es speziell am GUI-Zugriff scheitert, dann könnte es an einem Fehlenden Dispatcher liegen.
    Gemacht habe ich sowas in Store Apps noch nie. Aber ich denke mal, das es so aussehen müsste:
            private async void Button_Click(object sender, RoutedEventArgs e)
            {            
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    btn.Content = "btn";
                });
            }


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Partik Mittwoch, 18. September 2013 12:27
    Sonntag, 15. September 2013 20:41

Alle Antworten

  • Hallo,
    verstanden was du vor hast hab ich nicht. Aber wenn es speziell am GUI-Zugriff scheitert, dann könnte es an einem Fehlenden Dispatcher liegen.
    Gemacht habe ich sowas in Store Apps noch nie. Aber ich denke mal, das es so aussehen müsste:
            private async void Button_Click(object sender, RoutedEventArgs e)
            {            
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    btn.Content = "btn";
                });
            }


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Partik Mittwoch, 18. September 2013 12:27
    Sonntag, 15. September 2013 20:41
  • danke das hat funktioniert! eine sache noch. der code läuft jetzt zu weilen etwas rucklig, das kann ich ja nun an meinem UI element sehen. Gibt es so etwas wie einen delay operator oder so dass ich die ausführung des codes um ein paar milisekunden verzögern kann?
    Mittwoch, 18. September 2013 12:28
  • Task.Delay müsste das tun können:
    await Task.Delay(TimeSpan.FromMilliSeconds(10));
    Die Leistung wird sich dadurch aber auch nicht großartig verbessern, da die eigentlliche Aufgabe nur verschoben wird.

    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Mittwoch, 18. September 2013 14:47