none
Exception beim Zugriff auf UI-Element RRS feed

  • Frage

  • Wie kann ich auf image1 zugreifen?

    Fehlermeldung:

    Eine Schnittstelle, die für einen anderen Thread marshalled war, wurde von der Anwendung aufgerufen. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

    Code:

    public MainPage()

    {

    this.InitializeComponent();

    int period = 100;

    ThreadPoolTimer PeriodicTimer = ThreadPoolTimer.CreatePeriodicTimer(ExampleTimerElapsedHandler, TimeSpan.FromMilliseconds(period));

    } 

    private void ExampleTimerElapsedHandler(ThreadPoolTimer timer)

    {

    image1.Width *= 1.002;

    }




    • Bearbeitet hth26 Donnerstag, 20. August 2015 13:11
    Mittwoch, 19. August 2015 11:43

Antworten

  • Hallo,

    die Meldung kommt mir bekannt vor.

    Bei mir lag es daran dass ich versucht habe Änderungen an Objekten der UI (z.B. Image) vorzunehmen, aber meine Funktion die die Änderung vornehmen sollte, nicht im selben Thread wie die UI läuft.

    D.h. man muss die Funktion über den CoreDispatcher der UI ausführen.

    Siehe z.B. Dispatcher vom aktuellen UI-Thread ermitteln

    Ich hoffe hiermit einen Anstoß zur Lösung gegeben zu haben.

    Mittwoch, 19. August 2015 12:06

Alle Antworten

  • Hallo,

    die Meldung kommt mir bekannt vor.

    Bei mir lag es daran dass ich versucht habe Änderungen an Objekten der UI (z.B. Image) vorzunehmen, aber meine Funktion die die Änderung vornehmen sollte, nicht im selben Thread wie die UI läuft.

    D.h. man muss die Funktion über den CoreDispatcher der UI ausführen.

    Siehe z.B. Dispatcher vom aktuellen UI-Thread ermitteln

    Ich hoffe hiermit einen Anstoß zur Lösung gegeben zu haben.

    Mittwoch, 19. August 2015 12:06
  • Ja, ich hatte auch schon in dieser Richtung experimentiert. Es scheint aber einiges anders zu sein als unter Win8.

    Mit einem DispatcherTimer funktioniert es, sieht aber fürchterlich aus (flackern).

    hth26

    Freitag, 21. August 2015 07:50
  • Beispiel für den Core Dispatcher:

    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        // your code
    });

    Mittwoch, 12. April 2023 21:10