Sanduhrfunktion ohne Cursor


CopWorker

Mitglied
Hallo zusammen,

in meiner Anwendung habe ich eine "Thread.Sleep(...)" Funktion mit einer variablen Wartezeit eingefügt.
Solange diese läuft möchte ich gerne eine Art Sanduhrfunktion an einer bestimmten Position animiert laufen lassen.
Die "Cursors.WaitCursor" Anweisung kann ich zwar starten und die Positionierung bestimmen,
C#:
Point ptClient = PointToClient(btStart.Parent.PointToScreen(btStart.Location));
ptClient.X += btStart.Size.Width / 2; ptClient.Y += btStart.Size.Height / 2;
Point sScreen = PointToScreen(ptClient);

Cursor = Cursors.WaitCursor;
Cursor.Position = sScreen;
Thread.Sleep(sStartDelayTime.iValue);
Cursor = Cursors.Default;
...dann zieht es mir aber immer den Mauszeiger währenddessen weg.
Gefällt mir nicht so gut.

Muss ich das in eine neuen Thread auslagern und eine Animation mittels "GIF" starten.

Wenn´s einfacher geht wäre ich sehr dankbar.

Grüße von CopWorker
 

Spyke

Premium-User
Was hast du vor?
Soweit ich das seh willst du ein Sleep im UI Thread machen, warum?
Damit blockierst du ja die Ausführungen in deinem UI Thread.

Darüber hinaus ja ein animiertes GIF, der Cursor ist ja für die Maus da und wenn du die Position des Cursors änderst hat dies natürlich Auswirkungen auf deine Maus.

Aber wenn du das Sleep weiterhin im UI Thread ausführst wird die Animation des GIFs wohl auch nicht angezeigt werden. Die einzelnen Frames des GIFs müssen ja abgefragt und in der UI angezeigt werden.

Nachtrag:
Weiß gerade garnicht ob WinForms überhaupt animierte GIFs unterstützt oder dort dann eifnach nur der erste Frame angezeigt wird. Das weß i grad net.
 

Neue Beiträge