创建一个持续运行的c#应用程序

时间:2013-07-17 22:03:23

标签: c# .net windows rest

我正在编写一个客户端应用程序,将数据从用户计算机推送到网站。我希望这个应用程序每60秒更新一次网站。现在我的功能包含在一个无限循环中,休眠时间为45秒。但是,Windows表示该应用程序即使更新网站也没有响应。以下是我的代码的结构。

2 个答案:

答案 0 :(得分:3)

您的问题是您的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或任务并行库。

答案 1 :(得分:1)

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);
    }
}