Bonjour;
Je travaille sur un jeu comprenant des pendules, mais j'ai remarqué qu'elle est imprécise sous métro alors que le même
code sous desktop et silverlight fonctionne parfaitement (précision).
Le timer à environ 1O% d'erreur, par exemple sur 10s il est en retard de 1.5s sur un chrono classique. C'est encore pire dans le simulateur (par
rapport à l'ordi local) avec un retard de 3.5s sur 10s. En compilant pour le simulateur on voit même à l’œil nu que les dixièmes de secondes
sont au ralenti.
Voici le code (un textblock + 2 boutons en xaml):
J'utilise vs2012 express pour win8. Bien sûr, je compile en release.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 namespace timer { public sealed partial class MainPage : Page { const string INITTIME = "00:00:10:0"; const string PENDULE_FORMAT = @"hh\:mm\:ss\:f"; static TimeSpan time = new TimeSpan(); static readonly TimeSpan DIZIEME_SEC = TimeSpan.FromMilliseconds(100); static DispatcherTimer timer = new DispatcherTimer(); public MainPage() { this.InitializeComponent(); timer.Tick += timer_Tick; timer.Interval = DIZIEME_SEC; time = TimeSpan.FromSeconds(10); txtblock.Text = INITTIME; } void timer_Tick(object sender, object e) { time = time.Subtract(DIZIEME_SEC); txtblock.Text = time.ToString(PENDULE_FORMAT); if (time.TotalMilliseconds <= 0) timer.Stop(); } void start_Click(object sender, RoutedEventArgs e) { txtblock.Text = INITTIME; time = TimeSpan.FromSeconds(10); timer.Start(); } void stop_Click(object sender, RoutedEventArgs e) { timer.Stop(); } } }
Peut-être que le DispatcherTimer n'est pas adapté sous métro?
Merci.
Partager