我是第一次尝试在我的Windows服务应用程序中使用Thread
。现在根据我的情况我必须从数据库读取数据,如果它与条件匹配,我必须在新线程中执行一个函数。现在主要担心的是,因为我的函数意味着在新线程中执行是冗长的并且需要时间,所以我有一个查询,我的程序将达到datareader代码并从我的函数保持数据库中读取新值在线程的后台执行。我的应用程序执行逻辑是特定于时间的。
这是代码..
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();
}
}
请帮帮我..
答案 0 :(得分:1)
是的,正如评论所说,每行将有一个帖子。如果您有4-5行,并且您将运行该代码,那么您将获得4-5个线程在后面快乐地工作。
你可能会对它感到高兴,并且离开它,在半年内,其他人将使用数据库,你将获得10K行,这将创建10K线程,并且你'我会去度假,人们会叫你恐慌,因为节目已经破了......
换句话说,你不想这样做,因为这是一种不好的做法。
您应该使用具有工作单元的队列,并从这些队列中读取固定数量的线程(在这种情况下,您可能有10K单位,但是可以说10个线程将接收它们并处理它们直到它们完成) ,或其他一些机制,以确保您不会每行创建一个线程。
除非你当然不在乎......