【问题标题】:Run thread 20 minutes after every run每次运行后 20 分钟运行线程
【发布时间】:2020-06-09 00:42:27
【问题描述】:

嗨,我有这个 c# windows 窗体应用程序,我在 InitializeComponent() 下有这个线程

现在它在应用程序启动后连续运行现在我想要的是在运行后每 20 分钟运行一次 例如

run
Wait 20 m.
run 
wait 20 m.
run
.... 

这是代码

Thread thread = new Thread(() =>
                {
                    while (true)
                    {

                       //some process

                    }
                });
                thread.IsBackground = true;
                thread.Start();

我把里面的代码去掉。

我面临的是应用程序占用了太多的计算机网络,因为线程每毫秒运行一次查询,所以我只需要在每次运行后每 20 分钟运行一次线程 希望我的解释清楚

提前谢谢你。

【问题讨论】:

  • 查看Thread.Sleep()方法文档
  • 考虑Timer。它当然不会构成“重大变化”——可能更改了
  • 因为应用程序中每个作业项都有 i 线程,所以如果有 100 个项目,我不会使用数百个计时器,每个项目都有不同的时间,这就是为什么,抱歉,我没有提前表示它跨度>
  • 对不起,我无法正确解释,它也已经在生产中运行,这也是原因之一

标签: c# .net multithreading winforms


【解决方案1】:

您可以使用Task.Delay 和异步 lambda:

Thread thread = new Thread(async () =>
            {
                while (true)
                {
                    await Task.Delay(TimeSpan.FromMinutes(20));
                    //some process
                    Console.WriteLine("1");

                }
            });

或使用 .NET Timer 之一以指定的时间间隔执行方法。

【讨论】:

  • 抱歉,我不能在现有应用程序中使用计时器,所以如果我更改,可能会发生重大变化
  • @KifferVan 然后尝试使用上面的 sn-p 或Thread.Sleep()
  • 是的。我在等20分钟后,我会在它之后做出回应
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2012-08-26
  • 2013-06-24
  • 2019-11-04
  • 2013-07-29
  • 2019-06-09
相关资源
最近更新 更多