我是一个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();
}
但在这两种情况下,应用程序都不会运行,因为它在无限循环上运行。
答案 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
}