我怎样才能不断检查c#?

时间:2016-04-27 21:09:15

标签: c# windows forms

我是一个c#begginer,我需要帮助来对Windows窗体应用程序进行持续检查。 我做了这个代码,但我不知道我可以粘贴它。

while(true)
{
    if(checkconn == true)
    {
        labelcheck.Text = "Connected";
    }
    else
    {
        labelcheck.Text = "Not Connected";
    }
}

我已经尝试过了:

private void loginform_Load(object sender, EventArgs e)
{
}

public loginform()
{
    InitializeComponent();            
}

但在这两种情况下,应用程序都不会运行,因为它在无限循环上运行。

2 个答案:

答案 0 :(得分:0)

总结发布的评论 - 如果您能够经常检查(而不是一直),并且如果您没有计划在进行大量处理期间,那么在您的表单中使用计时器是值得的。支票。问题是,如果您计划进行大量处理,则无法使用UI作为UI正在运行的当前线程,而是用于处理检查。如果是这种情况,那么正如@Ernest建议的那样,在单独的线程上执行检查是值得的。通过这种方式,您可以不断检查使用类似于您已有的代码(但放在DoWork的{​​{1}}块内)。 例如:

BackgroundWorker

答案 1 :(得分:0)

readonly BackgroundWorker _worker = new BackgroundWorker();

public loginform()
{
    InitializeComponent();
    _worker.DoWork += worker_DoWork;
    _worker.RunWorkerCompleted += worker_RunWorkerCompleted;
    _worker.RunWorkerAsync();
}

private static void worker_DoWork(object sender, DoWorkEventArgs e)
{
    Thread.Sleep(1000);
    e.Result = checkconn == true ? "Connected" : "Not Connected";
}

private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    label.Text = e.Result as string;
    _worker.RunWorkerAsync(); // loops endlessly
}