c# - 如何使应用程序永远不会关闭并每小时执行一个程序?
问题描述
怎么样!,有人可以帮我解决这个问题,我正在寻找的是每次“00”分钟(即每小时)通过控制台应用程序,存储过程只执行一次(我不知道为什么它运行超过 1 次,因为它是一个插入过程)并且我还希望应用程序永远不会关闭,稍后我想创建一个服务并执行更多过程,但我需要这个一段时间。我在做什么错?,想法是在控制台中写“等待批量插入”,到时候执行程序并写“成功插入”,然后继续输入“等待批量插入”,直到下一小时到来。
using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading;
namespace Job_StoreProcedure
{
class Program
{
static void Main(string[] args)
{
using (SqlConnection conn = new SqlConnection
("Server=localhost\\SQLEXPRESS;Database=VIDEOJUEGOS;Integrated Security=SSPI"))
{
conn.Open();
for (int i = 0; i - 1 < i++; i++)
{
Console.WriteLine("Waiting for insertion in batch");
if (DateTime.Now.ToString("mm") == "00")
{
SqlCommand cmd = new SqlCommand("usp_virtualX", conn);
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
Console.WriteLine("Successful insertion");
}
}
}
}
}
}
}
}
解决方案
只需使用计时器。
using System.Timers;
//...
class Program
{
private static Timer MainTimer = new Timer(1000 * 60 * 60);
static void Main(string[] args)
{
Console.WriteLine("Waiting for insertion in batch");
MainTimer.Elapsed += MainTimer_Elapsed;
// Wait for the start of the hour. Then start the one-hour MainTimer.
var tmptimer = new Timer() { Interval = 1000 };
tmptimer.Elapsed += (sender, e) =>
{
if (DateTime.Now.Minute == 0)
{
MainTimer.Start();
tmptimer.Stop();
MainTimer_Elapsed(null, null); // Call manually first time
}
};
tmptimer.Start();
while (true)
Console.Read();
}
private static void MainTimer_Elapsed(object sender, ElapsedEventArgs e)
{
using (SqlConnection conn = new SqlConnection ("Server=localhost\\SQLEXPRESS;Database=VIDEOJUEGOS;Integrated Security=SSPI"))
{
conn.Open();
SqlCommand cmd = new SqlCommand("usp_virtualX", conn);
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
Console.WriteLine("Successful insertion");
}
}
}
Console.WriteLine("Waiting for insertion in batch");
GC.Collect();
}
}
推荐阅读
- image - 如何从 Google Drive 在 Google Colaboratory 中插入内嵌图像
- python-2.7 - 用于在球体上呈现数据的配色方案
- javascript - 在 React 中映射数组时出错
- python - 代码似乎没有在函数内部的 if 语句之后运行
- python - 参数值的生成器
- react-native - react native - 通过当前屏幕将更新/数据发送到前一个屏幕
- sql - 了解何时在连接上使用子查询
- performance - 为什么 Elixir 中大量电源超时?
- file - 无法使用 std::fs 方法读取 Docker 映像中的文件
- javascript - 将 Node.js 与 Loopback 一起使用时,我在哪里添加侦听器?