ウェブサイトの商品ステータスをチェックするプログラムがあります。
以前にスレッドを学習したことがなかったので、プログラムで 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] を呼び出して実行するのが非常に遅いことです。
submit_buygoods の最後まで実行する _timerlist を呼び出した時間と、submit_buygoods を実行した時間をストップウォッチで確認しました。
submit_buygoods の実行は本当に速いですが、呼び出しプロセスは 1 つずつのようです。
_timerList[0] が submit_buygoods の実行を終了したら、_timerList[1] を実行します。
スレッドが多すぎる場合 (実際には約 15 )、これは System.threading.timer の欠陥ですか?
理由は何ですか?何か救済策はありますか?Thread t = new Thread() に切り替えると役に立ちますか?