public static void Perform() { if (_th != null) { throw null; // ? 実行中 } if (Gnd.ClientInfos.Count == 0) { return; } TimeData now = TimeData.Now(); // 毎分00秒前後は避ける。 { int s = (int)(now.T % 60); if (s < 5 || 50 < s) { return; } } _currClientIndex++; _currClientIndex %= Gnd.ClientInfos.Count; _info = Gnd.ClientInfos[_currClientIndex]; if (_info.Time次回更新 == null) { if (_info.Time最終更新 != null) { TimeData td = new TimeData(_info.Time最終更新.T); switch (_info.Period) { case Gnd.ClientInfo.Period_e.Minute_3: td.T += 180; break; case Gnd.ClientInfo.Period_e.Minute_5: td.T += 300; break; case Gnd.ClientInfo.Period_e.Minute_7: td.T += 420; break; case Gnd.ClientInfo.Period_e.Minute_10: td.T += 600; break; case Gnd.ClientInfo.Period_e.Minute_20: td.T += 1200; break; case Gnd.ClientInfo.Period_e.Minute_30: td.T += 1800; break; case Gnd.ClientInfo.Period_e.Hour_1: td.T += 3600 * 1; break; case Gnd.ClientInfo.Period_e.Hour_2: td.T += 3600 * 2; break; case Gnd.ClientInfo.Period_e.Hour_3: td.T += 3600 * 3; break; default: throw null; } _info.Time次回更新 = td; } else { _info.Time次回更新 = now; //_info.Time次回更新 = new TimeData(now.T + 1L); } } if (now.T < _info.Time次回更新.T) { return; } // 実行すること確定! _info.Time最終更新 = null; _info.Time次回更新 = null; _client = new ClientData(_info); _th = new Thread(PerformTh); _th.Start(); }
public ResultWin(ClientData client) { _client = client; InitializeComponent(); }