Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

11

10.07.2014, 19:41

Ich hab mit C# das WinForms-Zeug gemeint, sicher kann man auch auf die WinAPI zugreifen, ist in meinen Augen allerdings unnötig, kann man gleich in C++ machen.


Muss man nicht. Das ist wunderbar in WinForms abgebildet (die Enabled Eigenschaft von Control). Auch in WPF gibt es eine entsprechende Eigenschaft...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

10.07.2014, 19:46

Außer dass C# eine ganz andere Sprache mit wesentlich größerer Standardbibliothek ist, klar, kann man in C++ machen. :rolleyes:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

13

11.07.2014, 14:56

@Sacaldur:

sry ich hatte deinen editierten Beitrag nicht mehr gesehen ^^

ich benutze den System.Windows.Form.Timer.

also wiegesagt, die Form friert komplett ein, sobald auch nur irgendwas in:

C#-Quelltext

1
2
3
4
5
        private void eventWatcher_Tick(object sender, EventArgs e)
        {
            // Ganz viel Code....    
        }
ausgeführt wird.



Und ja, der Timer befindet sich im GUI Main Thread, deswegen friert die Form ein, du meinst ich sollte den in einen extra Thread auslagern?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

11.07.2014, 15:18

Der Tick eines Windows.Forms.Timers wird im GUI-Thread abgearbeitet. Wenn er das nicht tun soll, brauchst Du einen Thread oder System.Threading.Timer.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

15

11.07.2014, 17:29

Wenn du nur einfach fair sein möchtest und für dich genaues timing unwichtig ist so kannst du die Kontrolle an Windows abgeben mit Thread.Sleep(0).

MSDN Thread.Sleep
:love: := Go;

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

16

11.07.2014, 17:42

Der GUI Thread wird aber trotzdem nicht mehr Zeit für andere Aufgaben haben, wenn er auch noch ab und zu schlafen gelegt wird.

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

17

11.07.2014, 17:51

Aber die Granularität ist meist feiner. Und ich hatte ihn so verstanden, als ob es ihm darum ging.
:love: := Go;

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

18

11.07.2014, 18:33

Ich verstehe noch nicht ganz, was du möchtest. Ich sehe das so, dass in gewissen Zeiten deine GUI nichts tun soll, du aber das Fenster verschieben willst. Das klingt ja eher nach einem "Sperren" der Oberfläche, um Aktionen innerhalb des Fensters zu verbieten. Dazu musst du einfach in deinen GUI-Elementen vorsehen, dass gesperrt werden können. Das könnte man z.B. dadurch lösen, dass dein Fenster eine Lock() und Unlock()-Methode hat. welche dein Timer aufruft. innerhlab der Funktionen aktivierst bzw. deaktivierst du alle Eingabe-Elemente.
Ansonsten sagt der Name GUI-Thread schon, dass dieser GUI-Aufgaben erledigt und das möglichst auch nur tun sollte idealerweise. Und wenn die GUI nur auf Eingaben von Windows reagiert, ist er quasi arbeitslos und verbraucht kaum Last.

Werbeanzeige