.net dotnet:expresseditionvisualstudio2008中线程运行太慢?

.net dotnet:expresseditionvisualstudio2008中线程运行太慢?,.net,multithreading,webrequest,.net,Multithreading,Webrequest,我正在运行12个线程。这些线程正在调用的函数没有对某些对象进行任何锁定。但这些线程仍然占用了太多时间。(16分钟)。每个线程解析一个xml文档,如果单独运行,该文档运行正常。此问题是由于某些原因造成的,如express edition提供的max no threads或express edition提供的某些阻止dn 下面给出了每个线程调用的func的代码。 每个线程都有不同的rssfeed(urladdress) 公共静态类RssFileReader { 公共静态Rss GetRssDocu

我正在运行12个线程。这些线程正在调用的函数没有对某些对象进行任何锁定。但这些线程仍然占用了太多时间。(16分钟)。每个线程解析一个xml文档,如果单独运行,该文档运行正常。此问题是由于某些原因造成的,如express edition提供的max no threads或express edition提供的某些阻止dn


下面给出了每个线程调用的func的代码。 每个线程都有不同的rssfeed(urladdress)

公共静态类RssFileReader
{
公共静态Rss GetRssDocumentData(字符串rssFeed)
{
WriteLine(“RssFileReader中的线程:“+thread.CurrentThread.Name”);
IFormatProvider culture=new CultureInfo(“fr-fr”,true);
Rss rssDocumentObject=new Rss();
XmlDocument documentObj=新的XmlDocument();
尝试
{
documentObj.Load(HttpClient.GetWebResponse(@rssFeed,null,null,1200000,@)http://www.sahil.comGetResponseStream());
}
捕获(例外e)
{
e、 Source=“RssFileReader:加载xmldocument对象”;
投掷;
}
尝试
{
XmlNodeList channelList=documentObj.GetElementsByTagName(“通道”);
for(int k=0;kpublic static class RssFileReader
{
    public static Rss GetRssDocumentData(string rssFeed)
    {
        Console.WriteLine("thread in RssFileReader: " + Thread.CurrentThread.Name);

        IFormatProvider culture = new CultureInfo("fr-FR", true);

        Rss rssDocumentObject=new Rss();
        XmlDocument documentObj = new XmlDocument();
        try
        {
            documentObj.Load(HttpClient.GetWebResponse(@rssFeed, null, null, 1200000, @"http://www.sahil.com").GetResponseStream());
        }
        catch(Exception e)
        {
            e.Source = "RssFileReader:Loading xmldocument object";
            throw;
        }
        try
        {
            XmlNodeList channelList = documentObj.GetElementsByTagName("channel");
            for (int k = 0; k < channelList.Count; k++)
            {

                rssDocumentObject.ListOfChannel.Add(new Channel());
                int noOfItemInChannel = -1;
                //XmlNodeList itemList = channelList[k].ChildNodes;
                for (int i = 0; i < channelList[k].ChildNodes.Count; i++)
                {


                    switch (channelList[k].ChildNodes[i].Name)
                    {

                        case "item":
                            noOfItemInChannel++;
                            XmlNodeList xmlChildNodeOfItem = channelList[k].ChildNodes[i].ChildNodes;
                            //debugging
                            //Console.WriteLine("Thread Name in item in RssFileReader" + Thread.CurrentThread.Name);

                            rssDocumentObject.ListOfChannel[k].ListOfItem.Add(new Item());

                            for (int j = 0; j < xmlChildNodeOfItem.Count; j++)
                            {
                                switch (xmlChildNodeOfItem[j].Name)
                                {
                                    case "title":
                                        rssDocumentObject.ListOfChannel[k].ListOfItem[noOfItemInChannel].ItemTitle.InnerText = xmlChildNodeOfItem[j].InnerText;
                                        break;
                                    case "link":
                                        rssDocumentObject.ListOfChannel[k].ListOfItem[noOfItemInChannel].ItemLink.InnerText = xmlChildNodeOfItem[j].InnerText;
                                        break;
                                    case "description":
                                        rssDocumentObject.ListOfChannel[k].ListOfItem[noOfItemInChannel].ItemDescription.InnerText = xmlChildNodeOfItem[j].InnerText;
                                        break;
                                    case "pubDate":
                                        try
                                        {
                                            string dateTimeTemp = xmlChildNodeOfItem[j].InnerText;
                                            char[] splitCharArray = new char[1];
                                            splitCharArray[0] = ' ';
                                            string[] splitedDateTimeTemp = dateTimeTemp.Split(splitCharArray);
                                            string RFC822 = "ddd,ddMMMyyyyHH:mm:ss";
                                            rssDocumentObject.ListOfChannel[k].ListOfItem[noOfItemInChannel].ItemPubDate.PublicationDate = DateTime.ParseExact(splitedDateTimeTemp[0] + splitedDateTimeTemp[1] + splitedDateTimeTemp[2] + splitedDateTimeTemp[3] + splitedDateTimeTemp[4], RFC822, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
                                        }
                                        //exception not rethrown default date is assigned 
                                        catch (Exception e)
                                        {
                                            //Console.WriteLine("Exception while formatting string to datetime in rssFileReader():" + e);
                                        }
                                        break;
                                    case "guid":
                                        rssDocumentObject.ListOfChannel[k].ListOfItem[noOfItemInChannel].ItemGuid.InnerText = xmlChildNodeOfItem[j].InnerText;
                                        break;


                                }
                            }
                            break;
                        case "title":
                            rssDocumentObject.ListOfChannel[k].ChannelTitle.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "description":
                            rssDocumentObject.ListOfChannel[k].ChannelDescription.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "link":
                            rssDocumentObject.ListOfChannel[k].ChannelLink.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;

                        case "language":
                            rssDocumentObject.ListOfChannel[k].ChannelLanguage.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "pubDate":
                            try
                            {
                                string dateTimeTempForChannel = channelList[k].ChildNodes[i].InnerText;
                                char[] splitCharArrayForChannel = new char[1];
                                splitCharArrayForChannel[0] = ' ';
                                string[] splitedDateTimeTempForChannel = dateTimeTempForChannel.Split(splitCharArrayForChannel);
                                string formatStringForChannel = "ddd,ddMMMyyyyHH:mm:ss";
                                rssDocumentObject.ListOfChannel[k].ChannelPubDate.PublicationDate = DateTime.ParseExact(splitedDateTimeTempForChannel[0] + splitedDateTimeTempForChannel[1] + splitedDateTimeTempForChannel[2] + splitedDateTimeTempForChannel[3] + splitedDateTimeTempForChannel[4], formatStringForChannel, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
                            }
                            //exception not rethrown default date is assigned 
                            catch (Exception e)
                            {
                                //Console.WriteLine("Exception while formatting string to datetime in rssFileReader():" + e);

                            }
                            break;
                        case "lastBuildDate":
                            try
                            {
                                string dateTimeTempForChannel = channelList[k].ChildNodes[i].InnerText;
                                char[] splitCharArrayForChannel = new char[1];
                                splitCharArrayForChannel[0] = ' ';
                                string formatStringForChannel = "ddd,ddMMMyyyyHH:mm:ss";

                                string[] splitedDateTimeTempForChannel = dateTimeTempForChannel.Split(splitCharArrayForChannel);
                                rssDocumentObject.ListOfChannel[k].ChannelLastBuildDate.LastBldDate = DateTime.ParseExact(splitedDateTimeTempForChannel[0] + splitedDateTimeTempForChannel[1] + splitedDateTimeTempForChannel[2] + splitedDateTimeTempForChannel[3] + splitedDateTimeTempForChannel[4], formatStringForChannel, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
                            }
                            //exception not rethrown default date is assigned 
                            catch (Exception e)
                            {
                                //Console.WriteLine("Exception while formatting string to datetime in rssFileReader():" + e);

                            }

                            break;

                        case "docs":
                            rssDocumentObject.ListOfChannel[k].ChannelDocs.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "generator":
                            rssDocumentObject.ListOfChannel[k].ChannelGenerator.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "managingEditor":
                            rssDocumentObject.ListOfChannel[k].ChannelManagingEditor.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "webMaster":
                            rssDocumentObject.ListOfChannel[k].ChannelWebMaster.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;
                        case "ttl":
                            rssDocumentObject.ListOfChannel[k].ChannelTtl.InnerText = channelList[k].ChildNodes[i].InnerText;
                            break;

                    }
                }


            }
        }
        catch(Exception e)
        {
            e.Source = "RssFileReader:Reading xml document object data to rss object";
            throw;
        }
        Console.WriteLine("    Thread out RssFilereader :" + Thread.CurrentThread.Name);
        return rssDocumentObject;
    }
}
    try
    {
        // Removed unnecessary @ signs
        using (WebResponse response = HttpClient.GetWebResponse(
                  rssFeed, null, null, 1200000, "http://www.sahil.com"))
        using (Stream responseStream = response.GetResponseStream())
        {
            documentObj.Load(responseStream);
        }
    }
    catch(Exception e)
    {
        e.Source = "RssFileReader:Loading xmldocument object";
        throw;
    }