制作一个连续运行的c#应用程序

本文关键字:运行 连续 应用程序 一个 | 更新日期: 2023-09-27 18:22:51

我正在编写一个客户端应用程序,将用户计算机上的数据推送到网站。我希望这个应用程序每60秒更新一次网站。现在,我的函数被包裹在一个45秒睡眠的无限while循环中。但是,windows表示,即使该应用程序正在更新网站,它也没有响应。以下是我的代码的结构。

制作一个连续运行的c#应用程序

您的问题是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);
    }
}