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# Discussion :

[C# VS 2003]Vider spool imprimante


Sujet :

C#

  1. #1
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut [C# VS 2003]Vider spool imprimante
    salut à tous

    actuellement je bosse sur une appli qui gére des commande de repas et doit permettre l'éditions des factures jusque la rien de bien compliqué .

    Sauf lorsque je veut imprimer plus beaaucoup de factures mon programme ne veut plus imprimer je suis obliger de le relancer afin de demander l'impression des factures restantes.

    J'aurai donc voulu vider le buffer de l'imprimante afin ne plus avoir a redemarer mon programme toutes les 30-40 factures sachant que j'en ai en moyennes 70 à imprimmer a la suite.

    Est-ce quelqu'un aurait deja recontré le probleme ?

    d'avance merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Papy_Guik Voir le message
    salut à tous

    actuellement je bosse sur une appli qui gére des commande de repas et doit permettre l'éditions des factures jusque la rien de bien compliqué .

    Sauf lorsque je veut imprimer plus beaaucoup de factures mon programme ne veut plus imprimer je suis obliger de le relancer afin de demander l'impression des factures restantes.

    J'aurai donc voulu vider le buffer de l'imprimante afin ne plus avoir a redemarer mon programme toutes les 30-40 factures sachant que j'en ai en moyennes 70 à imprimmer a la suite.

    Est-ce quelqu'un aurait deja recontré le probleme ?

    d'avance merci.
    Je n'ai pas rencontré ce problème ... Cependant, j'ai rencontré souvent des problèmes de spoolers d'impression. Bien que je ne pense pas que cela soit une bonne solution, tu peux redémarrer le service du spooler d'impression à l'aide des commandes net stop et net start spooler ...

    Mais honnêtement, je pense que le problème provient d'autre part ... ne serait-ce pas tes impressions qui ont une taille en file d'attente un peu trop grande ? Comment gères tu l'impression ?

  3. #3
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    en fait j'edite mes fichier grace a Crystal Report

    ensuite pour mes impression je fait une boucle qui appelle mes factures puis j'imprime grace à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      PrintDialog imprimante = new PrintDialog();
      laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
      laFacture.PrintToPrinter(1, true, 1, nbPage);
    je suis pas sur que cela soit la meilleur solution mais j'ai récupérer le code en route l'ancien developpeur aillant démissionné je m'adapte au code comme je peu

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Papy_Guik Voir le message
    en fait j'edite mes fichier grace a Crystal Report

    ensuite pour mes impression je fait une boucle qui appelle mes factures puis j'imprime grace à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      PrintDialog imprimante = new PrintDialog();
      laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
      laFacture.PrintToPrinter(1, true, 1, nbPage);
    je suis pas sur que cela soit la meilleur solution mais j'ai récupérer le code en route l'ancien developpeur aillant démissionné je m'adapte au code comme je peu
    Mlaheureusement, je ne connais pas les objets crystal report ... Essaie tjs en redémarrant le spooleur toutes les n impressions ...
    Peut être que quelqu'un d'autre saura mieux te répondre.

    Bon courage.

  5. #5
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    désoler de te déranger encore mais c'est quoi le nom de l'objet gerant le spool (je m'en suis jamais servit ).

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Papy_Guik Voir le message
    désoler de te déranger encore mais c'est quoi le nom de l'objet gerant le spool (je m'en suis jamais servit ).
    En fait, ce que je t'ai donner c'est la commande DOS pour arreter et redémarrer ... alors méthode pas propre faire un ProcessStart ... Sinon il me semble qu'il existe un objet pour gérer les services.

    Effectivement, après vérification tu as un controle "graphique" qui se trouve dans Component / ServiceController. Tu n'as qu'à préciser le nom du serivce (en l'occurence Spooler).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private System.ServiceProcess.ServiceController serviceController1;
     this.serviceController1 = new System.ServiceProcess.ServiceController();
    this.serviceController1.ServiceName = "Spooler";
    serviceController1.Stop();
    serviceController1.Start();

  7. #7
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    Cool Merci j'ai trouver le composant

    je vais tester cela et je te tien au courant

  8. #8
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    Bon apres quelques tests j'ai toujours mon probleme. "Load Report Failed" sur mes derniere factures.

    Donc cela ne doit pas venir de la memoire du Spooler par contre je vois pas d'ou cela pourai venir.Peut etre un probléme de tempo pour la création d'un rapport ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Papy_Guik Voir le message
    Bon apres quelques tests j'ai toujours mon probleme. "Load Report Failed" sur mes derniere factures.

    Donc cela ne doit pas venir de la memoire du Spooler par contre je vois pas d'ou cela pourai venir.Peut etre un probléme de tempo pour la création d'un rapport ?
    N'aurais tu pas une erreur un peu plus détaillée (l'exception même ou bien dans le journal d'évènement) ?

    Sinon, au niveau des enchainements des impressions, ca se passe comment ? Tu créés un thread par impression ou bien tu les enchaines séquentiellement ?

    Dans le cas de plusieurs thread, je te conseillerai de limiter le nombre d'impression simultanée à 2 ou 3 en utilisant un ThreadPool.
    Dans le cas d'un enchainement séquentiel, je propose que tu fasses du pas à pas et que tu essaies d'isoler à partir de quel édition ca plante. Peut etre que le problème ne provient pas de l'impression mais tout simplement d'une édition qui n'arrive pas à se générer ? Si ça passe en faisant du pas à pas, tu peux mettre un Thread.Sleep() entre deux éditions, sinon je te conseil d'activer les exceptions (CTRL D + E) lors de l'édition pour trouver d'ou provient l'erreur exactement.

    Tiens moi au courant.

  10. #10
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    Salut

    je fait mes impressions de maniere sequentielle je viens de tester le thread.sleep(1000) (mais seulement toutes les 40 impressions pasque sinon ca fait encore ralentir la gestion des impression 70 *1000ms ca commence a faire long )

    Cependant jai toujours le même soucis je vais essayer en mode pas a pas pour se qui est du message d'erreur je n'ai que ca via le message de l'exeption

    ================Edit===============
    En recuperant le nom du programme qui plante j'ai reussi a récupéré

    CrystalDecisions.CrystalReports.Engine

    donc serait ce crystal report qui s'embale et n'arrive pas a imprimé tout mes rapports ?

  11. #11
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    C'est bon j'ai trouvé en tout cas ca a l'air de marché

    il suffisait de fermé mon rapport

    car sinon crystal report ne fait pas bien son boulot ou alors c'est ramasse miette je c'est pas trop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PrintDialog imprimante = new PrintDialog();
      laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
      laFacture.PrintToPrinter(1, true, 1, nbPage);
     
    //fermeture du rapport
    laFacture.Close();

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Papy_Guik Voir le message
    C'est bon j'ai trouvé en tout cas ca a l'air de marché

    il suffisait de fermé mon rapport

    car sinon crystal report ne fait pas bien son boulot ou alors c'est ramasse miette je c'est pas trop.
    Moi, j'aurai tendance à dire que ce n'est ni crystal, ni le ramasse miette qui a fait un loupé ... mais plutot le développeur
    Je pense que tu devais avoir une légère fuite de mémoire

  13. #13
    Membre du Club
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    Ouai je suis assez d'accord sur l'histoire de la fuite de mémoire

    et puis bon maintenant je le saurais

    et merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vider le cache des imprimantes ?
    Par Juliobox dans le forum Windows
    Réponses: 0
    Dernier message: 10/03/2009, 10h41
  2. Imprimante partager sur Wind server 2003
    Par sondo dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 01/07/2008, 16h14
  3. Réponses: 2
    Dernier message: 05/09/2007, 11h51
  4. Afficher le spool d'une imprimante
    Par sandre dans le forum Windows Forms
    Réponses: 0
    Dernier message: 24/08/2007, 19h22
  5. [Win 2003]Imprimante Locale Tse
    Par yussuf dans le forum Windows Serveur
    Réponses: 17
    Dernier message: 21/03/2007, 10h55

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