![]() |
WPF Timer
Hallo zusammen,
ich hab ein kleines Problem mit einem Timer in der WPF der C# code dazu sieht so aus: Zitat:
Delphi-Quellcode:
.... TMyClass = class .... private ... t : System.Threading.Timer; method Tick(data : Object); ... end; .... implementation constructor TMyClass; begin t := new System.Threading.Timer(Tick(new Object), new Object, 5000, 1000); end; method TMyClass.Tick(data : Object); begin MessageBox.Show('Hello World'); end; ... Das ganze gibt dann einen Compile-Error weil angeblich der erste Parameter, nicht passt: Zitat:
Vielen Dank, Tobi |
Re: WPF Timer
der erste parameter passt nicht :stupid:
Du schreibt da: Zitat:
Ich vermute mal du meinst das so: Zitat:
|
Re: WPF Timer
ja eigentlich meine ich das so, aber wenn ich die Parameter weglasse bekomme ich nen Build Error das er die Funktion mit den Parametern nicht finden kann :(
|
Re: WPF Timer
Dann deklariere die Funktion mal als Klassenfunktion (entspr. static) und nicht als Methode ...
|
Re: WPF Timer
Delphi-Quellcode:
Hmm tut immer noch nicht :(.... TMyClass = class .... private ... t : System.Threading.Timer; class procedure Tick(data : Object); ... end; .... implementation constructor TMyClass; begin t := new System.Threading.Timer(Tick(new Object), new Object, 5000, 1000); end; class procedure TMyClass.Tick(data : Object); begin MessageBox.Show('Hello World'); end; ... |
Re: WPF Timer
Das meinte ich eigentlich so:
Delphi-Quellcode:
Sonst probiers mal so:
constructor TMyClass;
begin t := new System.Threading.Timer(Tick, "", 5000, 1000); end; class procedure TMyClass.Tick(data : Object); begin MessageBox.Show('Hello World'); end;
Delphi-Quellcode:
Ich kenne mich mit Prism auch nicht so gut aus :???:
constructor TMyClass;
begin timerDelegate : TimerCallback = new TimerCallback({self.}Tick); t := new System.Threading.Timer(timerDelegate, "", 5000, 1000); end; class procedure TMyClass.Tick(data : Object); begin MessageBox.Show('Hello World'); end; |
Re: WPF Timer
Der Constructor für TimerCallback(<methode>) existiert nicht -.- ... ich bin jetzt auf nen Thread über gegangen und such grad ne art "synchronize" wie ich das aus Java kenne ...
Danke fürs Helfen, Tobi |
Re: WPF Timer
Hallo!
Wenn Du eine Methode als Parameter übergeben möchtest, musst Du ein "@" davor schreiben. Folgender Quelltext zeigt auch die Verwendung von Dispatcher.Invoke, was wohl dem Synchronize aus Java entsprechen dürfte (behaupte jetzt einfach mal, ohne es zu kennen :D)
Delphi-Quellcode:
Grüße
type
Window1 = public partial class(System.Windows.Window) private public constructor; method Window1_Loaded(sender : Object; e : RoutedEventArgs); method Callback(state : Object); end; implementation constructor Window1; begin InitializeComponent(); end; method Window1.Window1_Loaded(sender : Object; e : RoutedEventArgs); begin var timer := new System.Threading.Timer(@Callback, nil, 0, 1000); end; method Window1.Callback(state : Object); begin Dispatcher.Invoke(DispatcherPriority.Normal, method; begin textBox1.Text := DateTime.Now.ToString; end); end; Christian |
Re: WPF Timer
Ahhhh ... Funktionspoint ...
Vielen lieben Dank Tobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz