public void clonaFotografie(Fotografia[] fotografie)
        {
            _clonaImmaginiWorker = new ClonaImmaginiWorker(fotografie, fineClone);

            if (fotografie.Count() == 1)
            {
                _clonaImmaginiWorker.StartSingleThread();
            }
            else
            {
                // _clonaImmaginiWorker.Start();
                throw new NotSupportedException("clonare in multithread causa problemi con la Unit-Of-Work");
            }
        }
        public void clonaImmagineIncorniciata(Fotografia fotoOrig, string nomeFileImg)
        {
            FileInfo fileInfoSrc   = new FileInfo(fotoOrig.nomeFile);
            string   nomeOrig      = fileInfoSrc.Name;
            string   nomeFotoClone = ClonaImmaginiWorker.getNomeFileClone(fotoOrig);
            string   nomeFileDest  = Path.Combine(Config.Configurazione.cartellaRepositoryFoto, Path.GetDirectoryName(fotoOrig.nomeFile), nomeFotoClone);

            //Sposto la foto nella coartellaRepository e gli attribuisco il suo nome originale.
            File.Move(nomeFileImg, nomeFileDest);

            Fotografia fotoMsk = null;

            using (new UnitOfWorkScope(false))
            {
                try
                {
                    fotoMsk    = new Fotografia();
                    fotoMsk.id = Guid.NewGuid();
                    fotoMsk.dataOraAcquisizione = fotoOrig.dataOraAcquisizione;

                    Fotografo f = fotoOrig.fotografo;
                    OrmUtil.forseAttacca <Fotografo>(ref f);
                    fotoMsk.fotografo = f;

                    if (fotoOrig.evento != null)
                    {
                        Evento e = fotoOrig.evento;
                        OrmUtil.forseAttacca <Evento>(ref e);
                        fotoMsk.evento = e;
                    }

                    fotoMsk.didascalia = fotoOrig.didascalia;
                    fotoMsk.numero     = fotoOrig.numero;
                    // Le correzioni non devo duplicarle perché non sono tipiche della composizione finale, ma della foto originale.

                    fotoMsk.faseDelGiorno = fotoOrig.faseDelGiorno;
                    fotoMsk.giornata      = fotoOrig.giornata;

                    // il nome del file, lo memorizzo solamente relativo
                    // scarto la parte iniziale di tutto il path togliendo il nome della cartella di base delle foto.
                    // Questo perché le stesse foto le devono vedere altri computer della rete che
                    // vedono il percorso condiviso in maniera differente.
                    fotoMsk.nomeFile = Path.Combine(Path.GetDirectoryName(fotoOrig.nomeFile), nomeFotoClone);

                    fotografieRepositorySrv.addNew(fotoMsk);
                    fotografieRepositorySrv.saveChanges();
                }

                catch (Exception ee)
                {
                    _giornale.Error("Non riesco ad inserire una foto clonata. Nel db non c'è ma nel filesystem si: " + fotoOrig.nomeFile, ee);
                }

                AiutanteFoto.creaProvinoFoto(nomeFileDest, fotoMsk);

                // Libero la memoria occupata dalle immagini, altrimenti esplode.
                AiutanteFoto.disposeImmagini(fotoMsk, IdrataTarget.Tutte);

                // Notifico la lista delle foto da mandare in modifica
                NuovaFotoMsg msg = new NuovaFotoMsg(this, fotoMsk);
//				msg.descrizione += Configurazione.ID_FOTOGRAFO_ARTISTA;
                LumenApplication.Instance.bus.Publish(msg);
            }
        }