private static void _bw_DoWork(object sender, DoWorkEventArgs e) { OpenPort(); SqlliteDao.OpenConnection(true); while (true) { Logger.Info($"worker cycle {++_workerCycleCnt}"); try { UnitCommand unitCommand; //pokud jsou prikazy cekajici na zpracovani tak se provedou prednostne while (_unitCommandsQueue.TryDequeue(out unitCommand)) { Logger.Debug($"command {unitCommand.Description} dequeue"); unitCommand.Run(); Thread.Sleep(_runConfig.RelaxTime); Logger.Debug($"command invoke res:{unitCommand.Result}"); } //provedu nacitani ze vsech jednotek v cyklu foreach (var addr in UnitAddresses) { if (_bw.CancellationPending) { Logger.Info("*** read worker canceled ***"); _isWorkerStarted = false; SqlliteDao.CloseConnection(); return; } ObtainStatus((byte)addr); Logger.Debug($"+worker sleep: {_runConfig.WorkerSleepPeriod}"); Thread.Sleep(_runConfig.WorkerSleepPeriod); //pauza pred ctenim dalsi jednotky - parametr Logger.Debug("-worker sleep"); } //ClosePort(); //- muze byt problem ze prijimani dat neste neskoncilo //pokud o vynuceni uvolneni zdroju //Thread.Sleep(100); //GC.Collect(); //GC.WaitForPendingFinalizers(); //Thread.Sleep(100); } catch (Exception ex) { Logger.Error(ex); } } }
private static void TestCreateSchema() { var status = new UnitStatus() { Ok = 134, CasOk = 5454, CilKusuTabule = 1000, AktualDefectTabule = 0 }; SqlliteDao.OpenConnection(true); SqlliteDao.AddUnitState(100, status); status.Ok = 135; status.CasOk = 5455; SqlliteDao.AddUnitState(100, status); SqlliteDao.CloseConnection(); }