C# 如何使这成为一个无止境的循环,每成功一个流程都会超时

C# 如何使这成为一个无止境的循环,每成功一个流程都会超时,c#,C#,这是我解析来自数据库的字符串的代码。数据库大约有50个数据字符串,并且每5秒持续增长 我希望这段代码进入一个永无止境的循环,这样,如果新数据到达并且表为空,它将立即解析它 我只是想就如何使这段代码成为一个永无止境的循环处理器征求可能的建议 代码如下 private void btnActiveStart_Click(object sender, EventArgs e) { string connetionString = null; SqlConnection cnn;

这是我解析来自数据库的字符串的代码。数据库大约有50个数据字符串,并且每5秒持续增长

我希望这段代码进入一个永无止境的循环,这样,如果新数据到达并且表为空,它将立即解析它

我只是想就如何使这段代码成为一个永无止境的循环处理器征求可能的建议

代码如下

private void btnActiveStart_Click(object sender, EventArgs e)
{
    string connetionString = null;
    SqlConnection cnn;
    connetionString = "Data Source=SAMPLE12345;Initial Catalog=SAMPLE_TABLE;User ID=sa;Password=str0ngp@ssw0rd;MultipleActiveResultSets=True";
    cnn = new SqlConnection(connetionString);
    cnn.Open();
    string sqlquery = "SELECT top 1 SMSMSG,SMSDT FROM GPRSIN WHERE isHEX = '0'";

    SqlCommand command = new SqlCommand(sqlquery, cnn);

    SqlDataReader sdr = command.ExecuteReader();

    while (sdr.Read())
    {
        string input = sdr["SMSMSG"].ToString();
        string smsdt = sdr["SMSDT"].ToString();
        int s = input.Length;
        if (s == 105)
        {
            string account       = input.Substring(0, 15);
            txtbxImeiActive.Text = account;                       //ACCOUNT
            DateTime now         = DateTime.Now;              
            String finnow        = now.ToString("yyyy-MM-dd HH:mm:ss.fff");
            txtbxDateTimeStampFast.Text = finnow.ToString();      //DATETIME
            //Convert date START
            string datetime      = input.Substring(65, 12);
            string hour          = datetime.Substring(0, 2);
            string minutes       = datetime.Substring(2, 2);
            string seconds       = datetime.Substring(4, 2);
            string day           = datetime.Substring(6, 2);
            string month         = datetime.Substring(8, 2);
            string year          = datetime.Substring(10, 2);
            string strdate       = "20" + year + "-" + month + "-" + day + " ";
            string strtime       = hour + ":" + minutes + ":" + seconds + ".000";
            string findatetime   = strdate + strtime;
            DateTime gpsdatefast = Convert.ToDateTime(strdate);
            String fingpsdatefast= gpsdatefast.ToString("yyyy-MM-dd HH:mm:ss.fff");
            DateTime gpstimesfast = Convert.ToDateTime(strtime);
            String fingpstimefast = gpstimesfast.ToString("HH:mm:ss");
            //Convert date END
            txtbxGpsDateFast.Text = fingpsdatefast.ToString();    //GPSDATE
            txtbxGpsTimeFast.Text = fingpstimefast.ToString();    //GPSTIME
            DateTime trxdatefast  = Convert.ToDateTime(smsdt);
            String fintrxdatefast = trxdatefast.ToString("yyyy-MM-dd 00:00:00.000");
            txtbxTrxDateFast.Text = fintrxdatefast;

            DateTime trxtimefast  = Convert.ToDateTime(smsdt);
            String fintrxtimefast = trxtimefast.ToString("HH:mm:ss");
            txtbxTrxTimeFast.Text = fintrxtimefast;

            DateTime philtime     = Convert.ToDateTime(findatetime).AddHours(8);
            String finphiltime    = philtime.ToString("yyyy-MM-dd HH:mm:ss.fff");
            txtbxPhilTimeFast.Text= finphiltime;

            //Convert DMS format to decimal (Degrees and fragment minutes) START LONG
            string deglong        = input.Substring(35, 10);
            string degreeslong    = deglong.Substring(0, 3);
            decimal degfin2       = decimal.Parse(degreeslong);
            string minuteslong    = deglong.Substring(3, 6);
            decimal minfin2       = decimal.Parse(minuteslong);
            decimal resminlong    = minfin2 / 60;
            decimal longresult    = degfin2 + resminlong;

            string gettlong = longresult.ToString();
            string longresultcut = gettlong.Substring(0, 7);
            decimal tlongcut = decimal.Parse(longresultcut);
            //Convert DMS format to decimal (Degrees and fragment minutes) START LONG
            txtbxLongFast.Text    = Math.Round(longresult, 6).ToString();
            txtbxTlong.Text = tlongcut.ToString();

            //Convert DMS format to decimal (Degrees and fragment minutes) START LAT
            string deglat         = input.Substring(25, 9);
            string degreeslat     = deglat.Substring(0, 2);
            decimal degfin1       = decimal.Parse(degreeslat);
            string minuteslat     = deglat.Substring(2, 6);
            decimal minfin1       = decimal.Parse(minuteslat);
            decimal resminlat     = minfin1 / 60;
            decimal latresult     = degfin1 + resminlat;
            string gettlat        = latresult.ToString();
            string latresultcut = gettlat.Substring(0, 6);
            decimal tlatcut      = decimal.Parse(latresultcut);
            //Convert DMS format to decimal (Degrees and fragment minutes) END  LAT
            txtbxLatFast.Text     = Math.Round(latresult, 6).ToString();
            txtbxTlat.Text = tlatcut.ToString();


            string tlocquery = "SELECT LAC,CID,LONG,LAT,STREET,MUNICIPAL FROM TRIANGULATION WHERE lat LIKE " + "'%" + tlatcut.ToString() + "%' AND long LIKE '%" + tlongcut.ToString() + "%'";
            //MessageBox.Show(platequery);
            SqlCommand commandtloc = new SqlCommand(tlocquery, cnn);
            SqlDataReader sdrtloc = commandtloc.ExecuteReader();
            while (sdrtloc.Read())
            {
                string Tlong = sdrtloc["LONG"].ToString();
                txtbxTlong.Text = Tlong.ToString();
                string Tlat = sdrtloc["LAT"].ToString();
                txtbxTlat.Text = Tlat.ToString();

                string Lac = sdrtloc["LAC"].ToString();
                txtbxLac.Text = Lac.ToString();
                string Cid = sdrtloc["CID"].ToString();
                txtbxCid.Text = Cid.ToString();

                string Street = sdrtloc["STREET"].ToString();
                string Municipal = sdrtloc["MUNICIPAL"].ToString();
                txtbxTloc.Text = Street.ToString() + "," + Municipal.ToString();
            }
            string speed = input.Substring(46, 5);
            txtbxSpeedFast.Text = speed;
            string platequery = "SELECT plateno FROM ACCOUNT WHERE senderno =" + "'" + account + "'";
            //MessageBox.Show(platequery);
            SqlCommand commandplate = new SqlCommand(platequery, cnn);
            SqlDataReader sdrplate = commandplate.ExecuteReader();
            while (sdrplate.Read())
            {
                string plate = sdrplate["plateno"].ToString();
                txtbxActivePlate.Text = plate.ToString();
            }

            string locquery = "SELECT NAME,MUNICIPALI FROM ROAD WHERE lat LIKE " + "'%" + tlatcut.ToString() + "%' AND long LIKE '%" + tlongcut.ToString() + "%'";
            //MessageBox.Show(platequery);
            SqlCommand commandloc = new SqlCommand(locquery, cnn);
            SqlDataReader sdrloc = commandloc.ExecuteReader();
            while (sdrloc.Read())
            {
                string name = sdrloc["NAME"].ToString();
                string municipali = sdrloc["MUNICIPALI"].ToString();
                txtbxLocation.Text = name.ToString() + "," + municipali.ToString();
            }
            string engine = input.Substring(21, 1);
            if (engine == "6" || engine == "2")
            {
                txtbxEngineFast.Text = "ON";
            }
            else if (engine == "4" || engine == "0")
            {
                txtbxEngineFast.Text = "OFF";
            }
            if (speed == "000.0")
            {
                txtbxRemarks.Text = "Stopped";
            }
            else
            {
                txtbxRemarks.Text = "Running";
            }
            string alert1 = input.Substring(20, 1);
            txtbxEvents.Text = alert1;
            string odometer = input.Substring(91, 6);
            //Convert hex to decimal and compute Odometer START
            int kmrun = Convert.ToInt32(odometer, 16);
            double kmfin = kmrun / 1000 * 1.852;
            //Convert hex to decimal and compute Odometer END

            txtbxOdometerActive.Text = kmfin.ToString();
            if (alert1 == "2")
            {
                txtbxAlertActive.Text = "CIRCUIT CUT-OFF";
            }
            else if (alert1 == "4")
            {
                txtbxAlertActive.Text = "Over the speed limit";
            }
            else if (alert1 == "6")
            {
                txtbxAlertActive.Text = "Over the speed limit and Circuit Cut-off";
            }
            else if (alert1 == "0")
            {

                if (engine == "1")
                {
                    txtbxAlertActive.Text = "Panic Button";
                }
                else if (engine == "3" || engine == "7")
                {
                    txtbxAlertActive.Text = "Panic Button";
                    txtbxEngineFast.Text = "ON";
                }
                else if (engine == "5")
                {
                    txtbxAlertActive.Text = "Panic Button";
                    txtbxEngineFast.Text = "OFF";
                }
                else if (engine == "8" || engine == "C")
                {
                    txtbxAlertActive.Text = "Seatbelt ON";
                }
                else if (engine == "9" || engine == "D")
                {
                    txtbxAlertActive.Text = "Panic Button and Seatbelt ON";
                }
                else if (engine == "A" || engine == "E")
                {
                    txtbxAlertActive.Text = "Seatbelt ON";
                    txtbxEngineFast.Text = "ON";
                }
                else if (engine == "B" || engine == "F")
                {
                    txtbxAlertActive.Text = "Seatbelt ON and Panic Button";
                    txtbxEngineFast.Text = "ON";
                }
            }
            string status = input.Substring(24, 1);
            if (status == "A")
            {
                txtbxDevStatus.Text = "OK";
            }
            else
            {
                txtbxDevStatus.Text = "Message Not Valid";
            }
            string determinator = input.Substring(16, 3);
            if (determinator == "RA1")
            {
                txtbxDevType.Text = "R10-V2";
            }
            txtbxLastValidDateTime.Text = finnow.ToString();
        }
        else
        {
            MessageBox.Show("NOT 105"); 
        }
    }
}

您可以使用
while(true)
loop或
for(;;)
for永无止境的循环

是的,先生。它需要每天运行永无止境的循环:很抱歉不熟悉这一点,但我应该把它们放在哪里。添加您希望在while或for循环中连续循环的代码