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

本文关键字:线程 执行 函数 数据库 新线程 读取 | 更新日期: 2023-09-27 18:20:20

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

请帮帮我。

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

是的,正如注释所说,每行将有一个线程。如果您有4-5行,并且您将运行该代码,那么您将得到4-5个线程在后面愉快地工作。

你可能会对此感到高兴,然后离开它,半年后,其他人会玩DB,你会得到10公里的行,这会创建10公里的线程,你会在度假,人们会说你很恐慌,因为程序坏了。。。

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

当然,除非你不在乎。。。