// // 放送開始 // public static void Start() { require_status = NLE_Status.NLE_NEED_START; mReryStartCount = RETRY_START_MAX; }
// // 放送停止 // public static void Stop() { require_status = NLE_Status.NLE_NEED_STOP; }
// // この関数を定期的に呼ぶ // public static void HandlingStatus(string id, Form mf = null) { if (inner_status == NLE_InnerStatus.NLE_STOP || inner_status == NLE_InnerStatus.NLE_IDLE) { if (require_status == NLE_Status.NLE_NEED_START) { // すでに起動していれば、起動モードに即移行 if (IsAlive && IsBroadCast) { inner_status = NLE_InnerStatus.NLE_RUN; return; } else { PushStart(); inner_status = NLE_InnerStatus.NLE_WAIT_FOR_RUN; waitUntil = DateTime.Now.AddSeconds(waitSeconds); return; } } } if (inner_status==NLE_InnerStatus.NLE_RUN) { //if (!IsAlive || !IsBroadcasting() || checkErrorDialog()) if (!IsBroadCast) { inner_status = NLE_InnerStatus.NLE_STOP; // もし、通信状態からNLEをクローズした場合は、 // リトライは行わない if (!IsAlive) { require_status = NLE_Status.NLE_IDLE; return; } } else { if (require_status == NLE_Status.NLE_NEED_STOP) { PushStart(); inner_status = NLE_InnerStatus.NLE_WAIT_FOR_STOP; waitUntil = DateTime.Now.AddSeconds(waitSeconds); return; } else if (require_status == NLE_Status.NLE_NEED_START) { mReryStartCount = RETRY_START_MAX; } } } if (inner_status==NLE_InnerStatus.NLE_WAIT_FOR_STOP) { if (!IsBroadCast) { inner_status = NLE_InnerStatus.NLE_STOP; return; } else if (waitUntil < DateTime.Now) { inner_status = NLE_InnerStatus.NLE_RUN; return; } } if (inner_status==NLE_InnerStatus.NLE_WAIT_FOR_RUN) { if (IsBroadCast) { inner_status=NLE_InnerStatus.NLE_RUN; } else if (waitUntil < DateTime.Now) { checkErrorDialog(); // 起動に失敗した場合、最大 RETRY_START_MAX回リトライします inner_status = NLE_InnerStatus.NLE_STOP; if (mReryStartCount > 0) { mReryStartCount--; } else { require_status = NLE_Status.NLE_IDLE; } } } }