我真的希望有人对TPL
&System.Net
类和方法都有足够的经验
一开始只是对当前顺序操作集的使用的简单想法TPL
导致我停止了我的项目。
由于我对 .NET 还很陌生,所以使用 TPL 直接跳到深水......
我试图使用提取 Aspx 页面的源/内容(html)WebClient
每天有多个请求(大约 20-30 页要通过)并从源代码中提取特定值......这只是服务器在其列表中的少数日常任务之一,
引导我尝试使用 TPL 来实现它,从而获得一些速度。
虽然我尝试使用Task.Factory.StartNew()
尝试迭代几个 WC 实例,但
在第一次尝试执行 WC 时,应用程序并没有从WebClient
这是我最后一次尝试
static void Main(string[] args)
{
EnumForEach<Act>(Execute);
Task.WaitAll();
}
public static void EnumForEach<Mode>(Action<Mode> Exec)
{
foreach (Mode mode in Enum.GetValues(typeof(Mode)))
{
Mode Curr = mode;
Task.Factory.StartNew(() => Exec(Curr) );
}
}
string ResultsDirectory = Environment.CurrentDirectory,
URL = "",
TempSourceDocExcracted ="",
ResultFile="";
enum Act
{
dolar, ValidateTimeOut
}
void Execute(Act Exc)
{
switch (Exc)
{
case Act.dolar:
URL = "http://www.AnyDomainHere.Com";
ResultFile =ResultsDirectory + "\\TempHtm.htm";
TempSourceDocExcracted = IeNgn.AgilityPacDocExtraction(URL).GetElementbyId("Dv_Main").InnerHtml;
File.WriteAllText(ResultFile, TempSourceDocExcracted);
break;
case Act.ValidateTimeOut:
URL = "http://www.AnotherDomainHere.Com";
ResultFile += "\\TempHtm.htm";
TempSourceDocExcracted = IeNgn.AgilityPacDocExtraction(URL).GetElementbyId("Dv_Main").InnerHtml;
File.WriteAllText(ResultFile, TempSourceDocExcracted);
break;
}
//usage of HtmlAgilityPack to extract Values of elements by their attributes/properties
public HtmlAgilityPack.HtmlDocument AgilityPacDocExtraction(string URL)
{
using (WC = new WebClient())
{
WC.Proxy = null;
WC.Encoding = Encoding.GetEncoding("UTF-8");
tmpExtractedPageValue = WC.DownloadString(URL);
retAglPacHtmDoc.LoadHtml(tmpExtractedPageValue);
return retAglPacHtmDoc;
}
}
我究竟做错了什么?是否可以使用WebClient
使用 TPL 或者我应该使用其他工具(无法使用 IIS 7 / .net4.5)?