【发布时间】:2014-10-24 04:40:21
【问题描述】:
我有一个窗口,我在 OnStart() 方法中添加了一个无限循环。我已经测试了该服务 1 小时,它运行良好。但因为这是我的第一个 Windows Service 所以有疑问无限循环的性能。
这是代码..
protected override void OnStart(string[] args)
{
while(true){
string Query="";
Query = "SELECT * FROM 'reportsetting` order by SendingTime;";
MySqlConnection con = new MySqlConnection(conn);
MySqlCommand comm = new MySqlCommand(Query, con);
con.Open();
MySqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
time = dr["SendingTime"].ToString();
if ((str = DateTime.Now.ToString("HH:mm")).Equals(time))
{
//Execute Function and send reports based on the data from the database.
Thread thread = new Thread(sendReports);
thread.Start();
}
}
//Halt for this Moment
while ((str = DateTime.Now.ToString("HH:mm")).Equals(time))
{
}
}
}
public void sendReports() {
}
所以想知道从长远来看是否可以。谢谢..
【问题讨论】:
-
这听起来像是一个非常糟糕的主意,但您没有描述足够的细节。循环中是否有任何中断条件?
-
@JamesCross 根据条件,我必须不断地从数据库中读取数据,然后根据条件在线程中做一些工作
-
@JamesCross 我已经用完整的代码更新了我的帖子。请看看
-
该代码效率极低。但是要解决您的 while(true) 问题,请查看使用计时器。当您再次需要查询时,让系统每分钟左右给您回电:stackoverflow.com/questions/10206000/…
-
@JamesCross 实际上,根据我的情况,我必须查询每个
40 seconds并在其后执行代码..
标签: c# windows-services infinite-loop