Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对c#进行常量检查?_C#_Windows_Forms - Fatal编程技术网

如何对c#进行常量检查?

如何对c#进行常量检查?,c#,windows,forms,C#,Windows,Forms,我是一名c#begginer,需要帮助对windows窗体应用程序进行持续检查。 我做了这个代码,但我不知道我可以粘贴到哪里 while(true) { if(checkconn == true) { labelcheck.Text = "Connected"; } else { labelcheck.Text = "Not Connected"; } } 我已经试着穿上了: private void loginf

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

while(true)
{
    if(checkconn == true)
    {
        labelcheck.Text = "Connected";
    }
    else
    {
        labelcheck.Text = "Not Connected";
    }
}
我已经试着穿上了:

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


但在这两种情况下,应用程序都不会运行,因为它运行在一个无休止的循环中。

为了总结发布的评论,如果您能够经常检查(而不是一直检查),并且如果您不打算在检查过程中进行大量处理,那么在表单中使用计时器是值得的。问题在于,如果您计划进行大量的处理,您将无法使用UI作为当前线程,而UI正在使用该线程进行操作,用于处理检查。如果是这样的话,那么正如@Ernest所建议的,在单独的线程上执行检查是值得的。通过这种方式,您可以使用类似于您已经拥有的代码的东西(但放在
BackgroundWorker
DoWork
块中)不断进行检查。 例如:

private void myBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    while(true)
    {
        if(checkconn == true)
        {
            labelcheck.Text = "Connected";
        }
        else
        {
            labelcheck.Text = "Not Connected";
        }
    }
}

相反,如果文本更改事件可用于标签,请尝试该事件。这将节省CPU周期,无需循环,但事件处理程序将完成此任务。我添加了计时器,但它给我带来了问题。我不能点击任何按钮。很可能你无法使用你的UI(点击一个按钮),因为你正在UI线程上运行你的检查。尝试在一个单独的线程上运行您的检查。您还可以使用委托从单独的thread.thx工具中操纵UI。我将继续努力。最好注册到连接状态更改时触发的相关事件,并在该事件触发时执行操作。我已经尝试了此操作,但没有发生任何问题。您需要将命令发送给
BackgroundWorker
以开始工作。thx!它工作完美!
private void myBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    while(true)
    {
        if(checkconn == true)
        {
            labelcheck.Text = "Connected";
        }
        else
        {
            labelcheck.Text = "Not Connected";
        }
    }
}
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
}