public CodaDiStampe(ParamStampa param, string nomeStampante, StampaCompletataCallback callback) : base(nomeStampante) { this.workerThread.SetApartmentState(System.Threading.ApartmentState.STA); if (String.IsNullOrEmpty(nomeStampante)) { throw new ArgumentException("Nome stampante vuota"); } _stampatore = ImagingFactory.Instance.creaStampatore(param, nomeStampante); this.stampaCompletataCallback = callback; }
private CodaDiStampe ricavaCodaDiStampa(ParamStampa param) { string nomeStampante = param.nomeStampante; // Se non esiste già la stampante nella collezione, allora la istanzio CodaDiStampe coda = ricavaCodaDiStampa(nomeStampante); if (coda == null) { coda = new CodaDiStampe(param, nomeStampante, stampaCompletataCallback); coda.Start(); this.code.Add(coda); } return(coda); }
/** * Pronto per stampare */ protected override void ProcessItem(LavoroDiStampa lavoroDiStampa) { //check if the user called Stop if (StopRequested) { _giornale.Info("Stampa stoppata dall'utente"); _giornale.InfoFormat("Thread di stampa terminato durante il lavoro '{0}'.", lavoroDiStampa.ToString()); return; } // Inizio a stampare lavoroDiStampa.stato = LavoroDiStampa.Stato.InEsecuzione; // Per evitare problemi di multi-thread, le immagini le idrato nello stesso thread con cui le manderò in stampa. // Non anticipare questo metodo altrimenti poi non va. // Se le immagini non sono idratate, le carico! ParamStampa param = null; if (lavoroDiStampa is LavoroDiStampaFoto) { LavoroDiStampaFoto lavoroDiStampaFoto = lavoroDiStampa as LavoroDiStampaFoto; //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio LavoroDiStampaFoto lsp = (LavoroDiStampaFoto)lavoroDiStampa; param = lsp.param; } else if (lavoroDiStampa is LavoroDiStampaProvini) { LavoroDiStampaProvini lavoroDiStampaProvini = lavoroDiStampa as LavoroDiStampaProvini; /* li carico dopo in modo diverso * foreach (Fotografia fot in lavoroDiStampaProvini.fotografie) * { * AiutanteFoto.idrataImmagineDaStampare( fot ); * } */ //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio LavoroDiStampaProvini lsp = (LavoroDiStampaProvini)lavoroDiStampa; param = lsp.param; } else if (lavoroDiStampa is LavoroDiStampaTessera) { LavoroDiStampaTessera lavoroDiStampaTessera = lavoroDiStampa as LavoroDiStampaTessera; param = lavoroDiStampaTessera.param; } // Se sono cambiati i parametri istanzio nuovamente lo stampatore. if (_stampatore == null || !param.GetType().IsAssignableFrom(_stampatore.tipoParamGestito)) { _stampatore = ImagingFactory.Instance.creaStampatore(param, param.nomeStampante); } EsitoStampa esito = _stampatore.esegui(lavoroDiStampa); lavoroDiStampa.esitostampa = esito; lavoroDiStampa.stato = LavoroDiStampa.Stato.Completato; StampatoMsg eventArgs = new StampatoMsg(lavoroDiStampa); eventArgs.descrizione = lavoroDiStampa.ToString(); eventArgs.esito = lavoroDiStampa.esitostampa == EsitoStampa.Ok ? Esito.Ok : Esito.Errore; if (stampaCompletataCallback != null) { stampaCompletataCallback.Invoke(this, eventArgs); } }
public CodaDiStampe(ParamStampa param, string nomeStampante) : this(param, nomeStampante, null) { }
public LavoroDiStampa(ParamStampa param) { this.param = param; }