private void ManageErrorImage(ArrayList iconicVarList, ElaborateResult result) { if (result.Success == false && Properties.Settings.Default.NumeroErrori > 0) { lock (lastErrorsLock) { if (LastErrors.Count == Properties.Settings.Default.NumeroErrori) { LastErrors[Properties.Settings.Default.NumeroErrori - 1].Dispose(); LastErrors.RemoveAt(Properties.Settings.Default.NumeroErrori - 1); } Utilities.CacheErrorObject ceo = new Utilities.CacheErrorObject(iconicVarList, result); if (Properties.Settings.Default.ErroriSuDisco) { //WriteErrorImageToDisk(ceo); if (ceo != null && ceo.IconicVar != null && ceo.IconicVar.Count > 0 && ((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar is HImage) { HImage img = (((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar as HImage).CopyImage(); Action actionSave = () => { try { WriteErrorImageToDisk(img); } catch (Exception ex) { ExceptionManager.AddException(ex); } }; if (this.taskWriteErrorImageToDisk == null) { this.taskWriteErrorImageToDisk = Task.Run(actionSave); } else { this.taskWriteErrorImageToDisk = this.taskWriteErrorImageToDisk.ContinueWith(k => actionSave()); } } } LastErrors.Insert(0, ceo); } } }
private void VisualizzaSelezionato() { try { if (lbScarti.SelectedItem != null && lbScarti.SelectedItem != DBNull.Value) { Utilities.CacheErrorObject ceo = (Utilities.CacheErrorObject)lbScarti.SelectedItem; // ne creo uno nuovo poiche i metodi di utility dispongono i controlli che vengono visualizzati, e ricreandolo ne faccio solo le copie ceo = new Utilities.CacheErrorObject(ceo.IconicVar, ceo.ElaborateResult); Utilities.CommonUtility.DisplayRegolazioni(ceo.IconicVar, viewControl, hMainWndCntrl, repaintLock); Utilities.CommonUtility.DisplayResult(ceo.ElaborateResult, hMainWndCntrl, repaintLock); } } catch (Exception ex) { ExceptionManager.AddException(ex); } }
private void WriteErrorImageToDisk(Utilities.CacheErrorObject ceo) { DateTime d = DateTime.Now; //string path = Path.Combine(Properties.Settings.Default.DatiVisionePath, "ERRORI", d.Year.ToString(), d.Month.ToString(), d.Day.ToString(), errorFolderName); string path = Path.Combine(Properties.Settings.Default.DatiVisionePath, "ERRORI", errorFolderName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //string fileName = Path.Combine(path, string.Format("{0}.tif", d.ToString("yyyyMMddHHmmss.fff"))); string fileName = Path.Combine(path, string.Format("{0}.tif", d.ToString("yyyyMMdd HH mm ss.fff"))); if (ceo != null && ceo.IconicVar != null && ceo.IconicVar.Count > 0 && ((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar is HImage) { (((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar as HImage).WriteImage("tiff", 255, fileName); /* cancello le immagini più vecchie che oltre il numero di immagini da tenere*/ string[] filesInError = Directory.GetFiles(path); if (filesInError.Length > Properties.Settings.Default.NumeroErrori) { filesInError = filesInError.OrderByDescending(k => k).Skip(Properties.Settings.Default.NumeroErrori).ToArray(); try { foreach (var file in filesInError) { File.Delete(file); } } catch (Exception) { // Volutamente vuoto } } } }