如何对c#进行常量检查?
我是一名c#begginer,需要帮助对windows窗体应用程序进行持续检查。 我做了这个代码,但我不知道我可以粘贴到哪里如何对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
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
}