IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Not enough timers available


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut Not enough timers available
    Bonjour,

    mon appli est d�velopp�e avec embarcadero rade studio XE.
    De temps en temps un message d'erreur s'affiche : Not enough timers available.
    Quelqu'un a t'il d�j� rencontr� ce probl�me ? Une id�e pour trouver le probl�me ?
    Trop de timers que je ne remets pas � enable = false ??

    merci pour votre aide !

    Pascale38

  2. #2
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    A v�rifier mais je crois me rappeler qu'il y a une limitation du nombre de timer, mais qui vient de windows, non du C++ Builder.
    Combien de Timer as-tu au total?

    Une solution possible consisterait � essayer de r�duire le nombre de timer en groupant.
    Genre si tu as 2 timers, l'un � 50ms et l'autre � 200ms, n'en fais qu'un seul avec une variable que tu incr�mentes et si la variable = 4 tu fais l'action de l'ancien timer 200ms et tu remets la variable a z�ro.

    Je sais pas si je suis clair je peux donner un exemple de code au pire si besoin.

  3. #3
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    Oui en effet il y a une limite aux nombre de Timers dans Windows. Voici un article (Anglais) qui en parle:
    http://blogs.msdn.com/b/oldnewthing/...7/9886147.aspx

    La limite est tr�s haute dans les versions r�centes de Windows, cependant ce qui est dit est que si l'application est gourmande en ressources cette limite sera atteinte faute de m�moire disponible.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Argol_Medusa : oui oui je crois que c'est clair, je crois que je vois ce que tu veux dire mais bon j'ai une vingtaine de timer en tout, et ils sont loin de tous tourner en m�me temps !

    Mais alors du coup le probl�me ne vient peut �tre pas de mon appli ?
    Et donc si tous les timers windows sont d�j� utilis�s par d'autres appli, on fait comment ?

    Je trouve tout �a assez bizarre quand m�me !

    Du coup pour l'instant je s�che l�...
    merci en tout cas pour vos r�ponses !!
    Pascale38

  5. #5
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Tu utilises TTimer ou API CreateTimer ?

    20 simultan�s mais as-tu de nombreuses cr�ations\lib�rations ?

    Tu ne pourrais pas g�rer un TTimer commun pour regrouper plusieurs Interval o� tu g�res manuellemet certains d�lais que tu calcules via System:iagnostics::TStopwatch (QueryPerformanceCounter)
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    J'utilise TTimer, et non justement ils ne sont jamais tous en simultan�s !!
    En fait sur quasi toutes mes pages, j'ai un timer pour rafraichir les donn�es re�ues. Une seule page peut �tre affich�e � la fois + deux timer sur la fen�tre principale. Les pages en g�n�ral ne contiennent qu'1 timer que je passe � enabled = true quand j'affiche la page et � false quand je la ferme...
    Je me demande si le probl�me ne vient pas plut�t de l�, est ce qu'un timer est recr�� � chaque ouverture de page et si oui est ce qu'il est bien lib�r� � la fermeture ??
    Mes Form sont cr��es avec un new TFormxxx, je suis partie du principe que la lib�ration se faisait automatiquement car comment faire un delete de la fen�tre sur le close ??? C'est peut �tre bien l� que j'ai une grosse erreur ???

  7. #7
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Citation Envoy� par Pascale38 Voir le message
    Mes Form sont cr��es avec un new TFormxxx, je suis partie du principe que la lib�ration se faisait automatiquement car comment faire un delete de la fen�tre sur le close ??? C'est peut �tre bien l� que j'ai une grosse erreur ???
    Ha oui il est fort possible que le probl�me vienne de l� effectivement, lors du new plein d'objets sur ta form vont �tre cr��s en m�moire, dont possiblement des threads, timers etc., et il faut que la destruction soit bien maitris�e.

    Il faudrait voir comment et o� tu as fais tes "new", pour voir o� mettre le delete objet et le objet = NULL; derri�re mais l�, faut nous montrer un peu de code parce que � l'aveugle ... ^_^'

    Question � tous hasard, ton MessageBox ne s'afficherait-il pas toujours au bout du m�me nombre d'ouverture / fermeture de fenetres ? (signe possible d'un d�bordement li� � la cr�ation d'un certain nombres d'objets sans delete ).

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Une appli toute simple pour vous expliquer mon probl�me :

    le fichier c++ principal
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #include <tchar.h>
    //---------------------------------------------------------------------------
    USEFORM("Unit29.cpp", Form29);
    USEFORM("Unit30.cpp", Form30);
    //---------------------------------------------------------------------------
    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
    {
    	try
    	{
    		Application->Initialize();
    		Application->MainFormOnTaskBar = true;
    		Application->CreateForm(__classid(TForm29), &Form29);
    		Application->Run();
    	}
    	catch (Exception &exception)
    	{
    		Application->ShowException(&exception);
    	}
    	catch (...)
    	{
    		try
    		{
    			throw Exception("");
    		}
    		catch (Exception &exception)
    		{
    			Application->ShowException(&exception);
    		}
    	}
    	return 0;
    }
    //---------------------------------------------------------------------------
    ma form principale (avec FormStyle = fsMDIForm)sur laquelle j'ai mis un bouton qui ouvre ma fen�tre secondaire (qui a comme FormStyle fsMDIForm et que j'ai mis en "available form" � la place de "auto-create form") :

    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit29.h"
    #include "Unit30.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm29 *Form29;
    //---------------------------------------------------------------------------
    __fastcall TForm29::TForm29(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm29::Button1Click(TObject *Sender)
    {
    	Form30 = new TForm30(this);
    }
    //---------------------------------------------------------------------------
    Voil� et donc je ne sais pas comment savoir quand ma fen�tre est ferm�e pour pouvoir lui faire un delete...

    J'esp�re avoir �t� claire !!!
    Pascale38

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Et pour r�pondre � :
    Question � tous hasard, ton MessageBox ne s'afficherait-il pas toujours au bout du m�me nombre d'ouverture / fermeture de fenetres ? (signe possible d'un d�bordement li� � la cr�ation d'un certain nombres d'objets sans delete ).
    ben j'en sais trop rien, car je n'arrive pas � reproduire le probl�me � la demande !! Perso je l'ai vu qu'une fois et sinon probl�me remont� pas un utilisateur donc difficile d'en savoir plus !!

    Pascale38

  10. #10
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Citation Envoy� par Pascale38 Voir le message
    Voil� et donc je ne sais pas comment savoir quand ma fen�tre est ferm�e pour pouvoir lui faire un delete...
    Tu n'as pas forc�ment besoin de le savoir, tu peux le laisser faire tout seul, en mettant du code sur l'�v�nement OnClose du TForm que tu veux d�truire:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    void __fastcall TForm30::FormClose(TObject *Sender, TCloseAction &Action)
    {
      Action = caFree;
    }

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    ahhhhhhhhhhhhhhhhhhhh merci totoche d'�clairer ma lanterne sur ce souci de lib�ration, je m'en vais de ce pas v�rifier que j'ai bien fait �a partout, mais effectivement je ne crois pas !!!

Discussions similaires

  1. There is not enough memory available now
    Par cersan dans le forum AIX
    R�ponses: 3
    Dernier message: 13/08/2010, 14h17
  2. [WD14] Not enough storage is available to process this command? Pourquoi
    Par chapeau_melon dans le forum WinDev
    R�ponses: 0
    Dernier message: 28/05/2009, 07h51
  3. restriction souris fen�tre : erreur 8 not enough storage ?
    Par chapeau_melon dans le forum WinDev
    R�ponses: 4
    Dernier message: 12/02/2008, 15h14
  4. [ORA-00371] Not enough shared pool memory !!!
    Par max44410 dans le forum Installation
    R�ponses: 6
    Dernier message: 30/11/2005, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo