点击这里下载,或者使用nuget下载
Install-Package MSFT.ParallelExtensionsExtras -Version 1.2.0
下载完成后,下面是用法:
public IActionResult GetPastData()
{
var list = _jsonSerializeHelper.Deserialize<IEnumerable<CustomStrategy>>("customStrategy.json").GetAwaiter().GetResult().ToList();
LimitedConcurrencyLevelTaskScheduler lcts = new LimitedConcurrencyLevelTaskScheduler(10);
TaskFactory factory = new TaskFactory(lcts);
var list1 = new List<string>() {
//"2018-01",
//"2018-02",
//"2018-03",
//"2018-04",
//"2018-05",
//"2018-06",
//"2018-07",
//"2018-08",
//"2018-09",
"2018-10",
//"2018-11",
}.SelectMany(t => list.Select(strategy => new CustomOnlineQueryCondition()
{
BeginDate = t,
EndDate = t,
Con1 = "CODE_TS",
Context1 = string.Join(",", strategy.Codes),
Currency = strategy.Currency,
I_E_Flag = strategy.I_E_Flag,
Con2 = strategy.Con2,
Context2 = strategy.Context2,
})).ToList();
//var task = list1.Select(x => _customOnlineQueryHtmlHelper.Execute(x)).ToList();
var taskList = new List<Task>();
foreach (var i in list1)
{
var task = factory.StartNew(() =>
{
_customOnlineQueryHtmlHelper.Execute(i);
Console.WriteLine("Current ThreadId {0}", Thread.CurrentThread.ManagedThreadId);
});
taskList.Add(task);
}
Task.WaitAll(taskList.ToArray());
return Json(list.ToArray());
}
参考链接
https://www.nuget.org/packages/MSFT.ParallelExtensionsExtras/