也许我的方法不对,请随时纠正我。
我的服务有以下方法:
public void PublishPriceChange()
{
for (int i = 0; i < 200; i++)
{
Task.Run(() =>
{
int j = i;
lock (_locker)
{
TransformPrices(_quotes);
PriceChangeEventArgs e = new PriceChangeEventArgs(_quotes);
PriceChanged(this, e);
}
});
}
}
_quotes
包含当天的开盘价,以及
TransformPrices()
只需在每次通话时稍微改变这些价格。这模拟了一天中的变化。因此,这些任务必须按顺序运行。
然而,让它们在线程池中这样运行意味着每个任务都是并行运行的,不再是按顺序运行的。
显然,我可以在没有多线程的情况下运行它们以获得所需的效果。但是,由于计算需要一些时间,所以最好在后台执行这些任务时保持服务的响应。
也许我可以用
Continuations
(获奖者)但不确定如何将其贯穿始终。
有什么建议吗?