asp.net中的多线程问题

时间:2011-11-28 13:43:04

标签: asp.net iis

我的服务器上托管了一个应用程序。此应用程序将电子邮件发送到用户列表。假设该列表有10000个用户。我将列表分为三个部分,并将每个部分分配给一个单独的线程来发送电子邮件。问题是,当我去我托管我的应用程序并运行应用程序的服务器时,它会将电子邮件发送到我创建的所有3个列表, 但是当我在本地电脑上远程浏览应用程序时。电子邮件没有发送。

任何人都可以帮助我解决问题以及如何解决问题。

提前谢谢 问候

1 个答案:

答案 0 :(得分:0)

嗨,这是代码。

# region /////Split Users List in 3 Parts////
                ArrayList thList1 = new ArrayList();
                ArrayList thList2 = new ArrayList();
                ArrayList thList3 = new ArrayList();
                ArrayList thListId1 = new ArrayList();
                ArrayList thListId2 = new ArrayList();
                ArrayList thListId3 = new ArrayList();
                int countList = arlistuid.Count / 3;
                int count;
                for (count = 0; count < arlistuid.Count; count++)
                {
                    if (count < countList)
                    {
                        thList1.Add(arlistuid[count]);
                        thListId1.Add(arlistid[count]);
                    }
                    else if (count >= countList && (count < countList + countList))
                    {
                        thList2.Add(arlistuid[count]);
                        thListId2.Add(arlistid[count]);
                    }
                    else
                    {
                        thList3.Add(arlistuid[count]);
                        thListId3.Add(arlistid[count]);
                    }

                }

                # endregion

                # region ///Send Email using 3 threads
                if (thList1.Count > 0)
                {
                    object thdargs = new object[2] { thList1, thListId1 };
                    Thread thd1 = new Thread(new ParameterizedThreadStart(SplitListEmail));
                    thd1.IsBackground = true;
                    thd1.Name = "Thread1";
                    thd1.Start(thdargs);
                }
                if (thList2.Count > 0)
                {
                    object thd2args = new object[2] { thList2, thListId2 };
                    Thread thd2 = new Thread(new ParameterizedThreadStart(SplitListEmail));
                    thd2.IsBackground = true;
                    thd2.Name = "Thread2";
                    thd2.Start(thd2args);
                }
                if (thList3.Count > 0)
                {
                    object thd3args = new object[2] { thList3, thListId3 };
                    Thread thd3 = new Thread(new ParameterizedThreadStart(SplitListEmail));
                    thd3.IsBackground = true;
                    thd3.Name = "Thread3";
                    thd3.Start(thd3args);
                }
                # endregion