Frage

Ich weiß nicht, ob dies ein allgemeines Web-Services-Problem ist oder mein spezielles Szenario nur, die eine WPF-Anwendung mit einem DispatcherTimer ist eine Web-Service-Methode aufrufe. Immer dann, wenn der Zeitgeber genannt wird, ändert sich der Mauszeiger automatisch in eine Sanduhr-Cursor.

Die Verarbeitung des Anrufs ist sehr kurz und geschieht alle 3 Sekunden, so dass die User Experience ist, dass alle 3 Sekunden der Maus filckers als Sanduhr für den Bruchteil einer Sekunde und dann geht zurück auf die normale Cursor-Darstellung.

Wie kann ich diesen Nachteil vermeiden?

Danke.

War es hilfreich?

Lösung

Ist Ihre gesamte App geht nicht mehr reagiert, wenn das Timer-Feuer als auch, oder ist es, den gesamten Prozess zu schnell zu bemerken?

Meine Vermutung ist, dass Sie Code seinen Aufruf können synchron auf DispatcherTimer, die kurzen Momente der Teilnahmslosigkeit (und vielleicht die Sanduhr) verursachen könnte. Um dies zu umgehen, stellen Sie sicher, dass Ihr Dispatcher-Tick-Ereignis Asynchron-Code ist.

Hier ist ein einfaches kleines Beispiel, dass alle 3 Sekunden, führt eine zweite gefälschte Arbeit und aktualisiert dann die GUI:

public partial class MainWindow : Window
{
    private static int foo = 0;

    public MainWindow()
    {
        InitializeComponent();

        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromMilliseconds(3000);
        timer.Tick += new EventHandler(delegate(object o, EventArgs args)
        {
            StatusBox.Text = "Incrementing";

            ThreadStart start = delegate()
            {
                // Simulate work
                Thread.Sleep(1000);

                // Update gui
                this.Dispatcher.BeginInvoke(new Action(delegate
                {
                    CountingBox.Text = (foo++).ToString();
                    StatusBox.Text = "Waiting";
                }));
            };

            new Thread(start).Start();                
        });

        timer.Start();
    }
}

(Es gibt andere Methoden, um die gleichen Ziele, dies war einfach zu erreichen rattern die Führung Sehen Sie hier für viel mehr Informationen. http://msdn.microsoft.com/en-us/magazine/cc163328.aspx )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top