我有一个检查网站商品状态的程序。
因为我以前没有学习过线程,所以我只是在我的程序中使用 system.threading.timer。
我有一个 system.threading.timer 列表和一些 system.threading.timer
List<system.threading.timer> _timerList;
System.threading.timer _timerA;
System.threading.timer _timerB;
System.threading.timer _timerC;
我调用_timerA查看货物状态,并调用_timerList购买货物,当货物上架时,有10个帐户的帐户列表。
我每 500 毫秒执行一次 _timerA。
_timerA = new System.Threading.Timer(new TimerCallback(submit_checkgoods), 0, 0, 500);
在 submit_checkgoods 内部(之前调用了 _timerList.Add(...) ):
if ( goodsIsUp == true)
{
for (int k = 0; k < infolistbb.Count; k++)
{
int copy = k;
_timerList[copy] = new System.Threading.Timer(new TimerCallback(submit_buygoods), copy, 0, 0);
}
}
问题是我发现调用 _timerlist[copy] 执行很慢。
我用秒表查看调用_timerlist执行到submit_buygoods结束的时间和执行submit_buygoods的时间。
submit_buygoods 的执行速度确实很快,但是调用过程却是一个接一个。
_timerList[0] 执行完 submit_buygoods 后,_timerList[1] 再执行。
当线程太多(实际上只有大约 15 个)时,这是 System.threading.timer 的缺陷吗?
原因是什么?有什么补救措施吗?切换到 Thread t = new Thread() 会有帮助吗?