/// <summary> /// 出稿処理 /// </summary> /// <param name="cm"></param> private bool PublishAsync(ContentModel cm)//, CancellationToken cancelToken) { bool ret = false; // ステータスクリア cm.ClearPubStatus(); // json作成 // .............. // exe呼び出し Process CmdExec = new Process(); // Timeout Timer Stopwatch sw = Stopwatch.StartNew(); // Sample Wait (実際はこの時間がexe待ち時間) long sampleWait = _rdm.Next(3000, 8200); Console.WriteLine($"■ {cm.ContentlId} の出稿開始(処理時間:{sampleWait / 1000}秒)"); while (sw.ElapsedMilliseconds < _maxWaitTime) { //ダミー負荷用ウエイト ms スレッドを止める Thread.Sleep(30); //進捗報告 cm.StatusValue = (double)(sw.ElapsedMilliseconds * 100.0 / _maxWaitTime); // Sample Wait到達でbreak if (sampleWait < sw.ElapsedMilliseconds) { // 処理結果OK if (sw.ElapsedMilliseconds < 8000) { ret = true; Console.WriteLine($"■ {cm.ContentlId} の出稿成功(処理時間:{sw.ElapsedMilliseconds / 1000}秒)"); break; } // 処理結果NG ret = false; Console.WriteLine($"■ {cm.ContentlId} の出稿エラー(処理時間:{sw.ElapsedMilliseconds / 1000}秒)"); break; } //キャンセルリクエストの確認 //if (cancelToken.IsCancellationRequested) //{ // ret = false; // break; //} } cm.SetPubStatus(ret); Console.WriteLine($"■ {cm.ContentlId} の出稿終了(処理時間:{sw.ElapsedMilliseconds / 1000}秒)"); //} return(ret); }