コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: marsikv/slevyr
        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();
        }