public static bool Initialize(SharedCodeWithApp codiceApp, string logTestoUteAvv = "", string logTestoUteErr = "") { DBBase db = null; Type classeDb = null; return(Initialize(codiceApp, db, classeDb, logTestoUteAvv: logTestoUteAvv, logTestoUteErr: logTestoUteErr)); }
///<param name="db">L'applicazione che userà main.dll avrà la sua variabile db e non userà DBNs.db, poichè DBNs.db è di tipo base e avrei difficoltà con l'intellisense</param> public static bool Initialize(SharedCodeWithApp codiceApp, DBBase db, Type classeDb, string logTestoUteAvv = "", string logTestoUteErr = "") { //*********************************************************************************************************************************************************************************************************************** //****************ATTENZIONE: Inserire il codice: <runtime><legacyUnhandledExceptionPolicy enabled = "1" /></runtime> nell'App.config, vedere Eccezioni.vb per i dettagli********************************************** //*********************************************************************************************************************************************************************************************************************** App.Config = new Apps.AppConfigFile(); mainInizializzato = false; proceduraChiusuraGiàEseguita = false; Thread thrCheckTimeInizial = new Thread(thrCheckInitializeTime); //Non ho usato avvio download per non aspettare thrCheckTimeInizial.IsBackground = true; thrCheckTimeInizial.Start(); if (Log.main == null) { Log.Initializes(ref Log.main, warnUserText: logTestoUteAvv, errUserText: logTestoUteErr); } AppDomain.CurrentDomain.UnhandledException += Excep.GestoreExNonGestiteDeiThreadSecondari; //Intercetta tutte le eccezioni non gestite dei thread secondari Application.Current.DispatcherUnhandledException += Excep.GestoreExNonGestiteDelMainThread; //Intercetta tutte le eccezioni non gestite del main thread (UI thread) if (codiceApp == null) { Log.main.Add(new Mess(LogType.ERR, "", "ricevuto codiceApp a null")); return(false); } App.SharedCodeApp = codiceApp; //if (defaultSaveLoc == null) //{ // Log.main.Add(new Mess(Tipi.ERR, "", "ricevuto defaultSaveLoc a null")); // return false; //} if (App.CheckAdminPermission() == false) //Placed after App.CodiceAppCond because use it. { MessageBox.Show("The application requires administrator privileges"); App.SharedCodeApp.ExitProcedure(saveConfigurations: false); } if (Thread.CurrentThread.ManagedThreadId != 1) { Log.main.Add(new Mess(LogType.ERR, "", "l'id del thread non è 1 richiamare Inizializza con il thread dell'UI")); return(false); } if (dll.inizializza() == false) { return(false); } //App.config.dbPrincipale.completa = "Provider=SQL Server Native Client 10.0;Server=Desktop\SQL2008R2Exp;Database=TestMain;Trusted_Connection=Yes;" 'oppure ";User Id=myUsername;Password = myPassword;" //App.config.SalvaSuFile() //App.MostraWndConfigApp() //Serial.Inizializza() 'Non so per quale stranissimo motivo, se lo inizializzo all'interno di "Serial" restituisce l'errore "System.IO.FileNotFoundException" dicendo che non... Serialize.jsonSett = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }; //...trova il file "Newtonsoft.Json.dll", //while (AppConfigFile.LoadFromFile(ref App.config, out _) == false) App.config = (AppConfigFile)App.config.LoadFromFile(out bool inErr); //while (inErr == true) //{ // App.ShowWndConfigApp(); // App.config = (AppConfigFile)App.config.LoadFromFile(out inErr); //} if (classeDb != null) { bool esito; List <string> listaErr; db = (DBBase)Activator.CreateInstance(classeDb); //La New del db dell'applicativo viene fatta qui perchè devo avere la variabile LogNs.log inizializzata App.Db = db; App.Db.ConnString = App.Config.MainDbConnString; if (db.ControlloStrutturaDB(out esito, out listaErr) == false) { //Log.main.Add(Tipi.ERR, Log.main.errUserText, listaErr); MessageBox.Show("Controllo strutta DB fallito"); return(false); //qui ci va il return false perchè significa che non sono riusciuto neanche a farla la comparazione } if (esito == false) { Log.main.Add(LogType.ERR, "", listaErr); //TODO -10 open errors list window with options: try recovery or close. } thrLockedQryKiller = new Thread(DBUtil.thrCycle_LockedQryKiller); //Non ho usato avvio download per non aspettare thrLockedQryKiller.IsBackground = true; thrLockedQryKiller.Start(); } App.AcquireStartupParameter(); //Deve stare prima di log.CaricaConfigAvviaThr perchè CaricaConfigAvviaThr in debugModeOn cambia comportamento if (Log.main.LoadConfigAndStartThread(App.Config) == false) { return(false); //deve stare dopo l'inizializzazione del DB e del App.config poichè normalmente caricherà le impostazioni da li } Log.main.ShowMessageWindow(); if (Zip.inizializza() == false) { return(false); } App.Download = new Www.DownLoad("main"); App.Upload = new Www.UpLoad("main"); thrAccessoRoot = new Thread(Root.ThrMostraNotificaAccessoRoot); //Non ho usato avvio download per non aspettare thrAccessoRoot.IsBackground = true; thrAccessoRoot.Start(); Application.Current.Exit += ApplicationExit; mainInizializzato = true; //TestUpload() return(true); }