簡體   English   中英

無限循環將基於時間運行

[英]Infinite loop that will run based on a time

我是編程新手,所以將為您提供任何幫助,我試圖讓我的CreateTable每2秒運行一次,但是當我單擊我的按鈕以執行InitLoop時,什么都沒發生,我嘗試了各種不同的操作,但是沒有做過能夠使它成功工作。

    private void CreateTable()
    {            
        //Set the number of columns and rows
        int tblColumns = 20;
        int tblRows = 50;
        //Create the table
        Table tbl = new Table();

        tbl.CssClass = "table";
        //Add table
        PlaceHolder1.Controls.Add(tbl);
        Random RandomNumber = new Random();
        for (int i = 0; i < tblRows; i++)
        {
            TableRow tr = new TableRow();
            for (int j = 0; j < tblColumns; j++)
            {
                TableCell tc = new TableCell();
                int Range = RandomNumber.Next(1, 99);
                tc.Text = Range.ToString();
                //Add Columns
                tr.Cells.Add(tc);
            }
            //Add Rows
            tbl.Rows.Add(tr);
        }
        return;
    }

    System.Timers.Timer myTimer = new System.Timers.Timer();

    private void InitLoop(bool runLoop)
    {
        while (true)
        {
            try
            {
                myTimer.Elapsed += myTimer_Elapsed;
                myTimer.Interval = 2000;
                myTimer.Enabled = true;
                myTimer.Start();
            }
            catch (Exception f)
            {
                //handle the exception 
            }
        }
    }

    private void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        CreateTable();
    }

計時器就是您所需要的。 無限循環正在快速重置計時器,因此沒有任何反應。

private void InitLoop(bool runLoop)
{
    try
    {
        myTimer.Elapsed += myTimer_Elapsed;
        myTimer.Interval = 2000;
        myTimer.Enabled = true;
        myTimer.Start();
    }
    catch (Exception f)
    {
        //handle the exception 
    }
}

通常,您不希望沒有某種thread.sleep()命令的無限循環,因為它還會將CPU驅使100%試圖盡快運行循環。

發生回調,但很可能方法CreateTable引發異常。 出現異常的原因是該方法嘗試更改gui對象。 為了更改此類對象,您必須位於gui線程上。 您需要查找的東西是Dispatcher,以及如何調度回調。

通過在計時器回調方法中添加try-catch進行驗證並進行調試,或者將異常寫入日志文件或類似文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM