多个系统线程定时器初始化缓慢



我有一个程序可以检查网站的货物状态。

由于我以前没有学过线程,所以我只是在我的程序中使用 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 的缺陷吗?

原因是什么?有什么补救措施吗?切换到线程 t = new Thread(( 会有帮助吗?

使用任务而不是线程,它们更适合短期作业。

Task.Factory.StartNew(submit_buygoods);

附言也许你不应该每500毫秒敲一次服务器,你可能会被禁止你的IP。

最新更新