using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Collections;
using System.Data.SqlClient;
using System.Timers;
using System.Threading;
using System.Runtime.InteropServices;

namespace BEMSDataGateway
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        /// 
        [STAThread]
        static void Main()
        {
            string mtxName = "DGW";
            Mutex mtx = new Mutex(true, mtxName);

            // 1초 동안 뮤텍스를 획득하려 대기
            TimeSpan tsWait = new TimeSpan(0, 0, 1);
            bool success = mtx.WaitOne(tsWait);

            if (!success)
            {
                MessageBox.Show("프로그램이 이미 실행중입니다.");
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
    /// <summary>
    /// 타이머 스레드 클래스
    /// </summary>

    class My_TimerThread
    {
        static string TimeCheck = "";

        Parsing PS = new Parsing();
        Control_Point_Group CPG = new Control_Point_Group();

        public System.Timers.Timer timer2;
        private Object DBCommObj = new Object();
        public static bool check = false;

        public void timer2start()
        {
            timer2 = new System.Timers.Timer();
            timer2.Interval = 10 * 1000; // 10sec 간격
            timer2.Elapsed += new ElapsedEventHandler(timer2_Elapsed);
            timer2.Start();
        }

        public void timer2Stop()
        {
            timer2.Stop();
            timer2.Enabled = false;
            timer2.Dispose();
        }

        public void timer2_Elapsed(object sender, ElapsedEventArgs e) // 1분마다 실행되는 데이터 수집 로직
        {
            string tmpMin = DateTime.Now.Minute.ToString(); // 현재의 '분'    
            lock (DBCommObj)
            {
                if (TimeCheck != tmpMin)
                {

                    CPG.Control_Group();
                    CPG.Control_Point();
                    TimeCheck = PS.SettingFileParsing();
                }
            }
        }
    }
}
