制作一个连续运行的c#应用程序
本文关键字:运行 连续 应用程序 一个 | 更新日期: 2023-09-27 18:22:51
我正在编写一个客户端应用程序,将用户计算机上的数据推送到网站。我希望这个应用程序每60秒更新一次网站。现在,我的函数被包裹在一个45秒睡眠的无限while循环中。但是,windows表示,即使该应用程序正在更新网站,它也没有响应。以下是我的代码的结构。
您的问题是while循环阻塞了UI线程。要解决此问题,您需要在单独的线程上运行代码。
开始时最简单的方法可能是使用Timer
:
System.Timers.Timer timer = new System.Timers.Timer(45000); // timer will execute every 45 seconds
timer.Elapsed += (sender, e) => {
// your upload code here
};
timer.Start();
不过,您绝对应该在稍后阶段研究线程。也许是BackgroundWorker
或任务并行库。
Thread.Sleep(...)
在指定的毫秒数内阻塞UI线程。一种方法是使用Task.Delay(..)
不阻塞UI线程,而是同时等待45秒:
private async void button1_Click(object sender, EventArgs e)
{
running = true;
while (running)
{
//your code
await System.Threading.Tasks.Task.Delay(4500);
}
}