.net stan idle aplikacji

0

witam, pisze w .net (c++) przegladarke moich plikow graficznych (taki format 3d) i mam problem ze stanem idle aplikacji, tzn moj program musi dzialac takze podczas bezczynnosci programu, wiadomo, potrafie zrobic idle event handler, ale on wywolywany jest tylko raz podczas wchodzenia aplikacji w stan bezczynnosci, jak zrobic zeby ta funkcja byla wywolywana ciagle? albo czy jest jakas mozliwosc zobaczenia czy aplikacji ze stanu idle wychodzi (wtedy bym zrobil petle w funkcji obslugujacej idle event i wychodzil z niej jakbym widzial ze zaplikacji z idle wychodzi). ktos sie spotkal z takim problemem?

0

Może wystarczyłoby użyć kontrolki Timer z łaściwością Interval ustawioną na 1 milisekundę ;P

0
otello napisał(a)

Może wystarczyłoby użyć kontrolki Timer z łaściwością Interval ustawioną na 1 milisekundę ;P
Opanuj się 8-|

0

Sprawdź czy przypadkiem GetQueueStatus ci się nie przyda.

PS. Pomysł z pętlą nie jest chyba dobry. ;)

PS. Pomysł z pętlą nie jest chyba dobry. ;)

Tu mój błąd:P - chciałem poprawić ale się nie dało

Tu masz przykładową pętle:

 while(1)
 {
  DWORD tmp00=GetQueueStatus(QS_ALLEVENTS);
  if(LOWORD(tmp00)!=0)break;

  /**** tu wciskasz jakiś kod ****/

 }
0

W zwykłym C++ przebudowałby główną pętlę komunikatów w programie i jeśli nie ma message'ów do obsłużenia to np.: renderujesz klatkę, czy robisz coś tam innego. Tak zwykle piszę aplikacje w DirectX i jak dotąd nie znalazłem wad tego rozwiązania :) Nie wiem, czy to zadziałałoby pod .NET, ale warto poszukać.

W przykładach do Managed DirectX (.NET) Microsoft robi jeszcze inaczej: po zrenderowaniu klatki od razu stan okna wstawia jako Invalidate, więc zmusza okno do odrysowania, jak tylko będzie miało czas na obsłużenie tego komunikatu..

0
Szczawik napisał(a)

W zwykłym C++ przebudowałby główną pętlę komunikatów w programie i jeśli nie ma message'ów do obsłużenia

W zasadzie to przykład z GetQueueStatus robi to samo tyle, że w pętli zagnieżdżonej w głównej pętli programu. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1