读取数据库值并在新线程中执行函数

时间:2014-09-01 05:14:53

标签: c# multithreading

我是第一次尝试在我的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();
    }
}

请帮帮我..

1 个答案:

答案 0 :(得分:1)

是的,正如评论所说,每行将有一个帖子。如果您有4-5行,并且您将运行该代码,那么您将获得4-5个线程在后面快乐地工作。

你可能会对它感到高兴,并且离开它,在半年内,其他人将使用数据库,你将获得10K行,这将创建10K线程,并且你'我会去度假,人们会叫你恐慌,因为节目已经破了......

换句话说,你不想这样做,因为这是一种不好的做法。
您应该使用具有工作单元的队列,并从这些队列中读取固定数量的线程(在这种情况下,您可能有10K单位,但是可以说10个线程将接收它们并处理它们直到它们完成) ,或其他一些机制,以确保您不会每行创建一个线程。

除非你当然不在乎......