Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da ein anderer Thread es besitzt

8

Also mache ich ein einfaches Ziegelsteinbruchspiel in c # / wpf. Ich stoße auf ein Problem mit Timern, ich glaube, es ist wahrscheinlich eine einfache Lösung, aber hier ist was passiert. Immer wenn t_Elapsed abgefeuert wird, versucht es Update () aufzurufen, aber wenn es wie OMG funktioniert, bin ich nicht im richtigen Thread, also kann ich das nicht tun. Wie rufe ich die Methode vom Spiel aus dem richtigen Thread auf? (Und ja, ich weiß, dass der Code hässlich ist und magische Zahlen hat, aber ich habe ihn einfach ausgetrickst, ohne viel Mühe darauf zu verwenden. Und ja, ich habe keine Erfahrung mit Programmierspielen)

%Vor%     
FlyingStreudel 22.06.2010, 16:07
quelle

3 Antworten

11

Sie sollten stattdessen das DispatcherTimer -Objekt verwenden dass die Timer-Ereignisse im richtigen Thread veröffentlicht werden.

    
luke 22.06.2010, 16:09
quelle
5

Timer abgelaufene Ereignisse feuern auf einen Thread aus dem Thread-Pool ( Ссылка ) und nicht auf der Benutzeroberfläche Faden. Am besten rufen Sie den Dispatcher des Steuerelements über einen Aufruf wie folgt auf:

%Vor%     
Ed Power 22.06.2010 16:28
quelle

Tags und Links