badarhn Ответов: 1

Output.analysis = ожидание задачи; возврат исключения


всем привет
Я тестирую новый пример когнитивной службы Microsoft,
приведенный ниже код :
GitHub - microsoft/Cognitive-Samples-VideoFrameAnalysis: библиотека с примерами приложений для непрерывного анализа живого видео с использованием API Microsoft Cognitive Services Vision.[^]


когда я пытаюсь это сделать он возвращает исключение в классе FrameGrabber
в частности на линии 518 :

выход.Анализ = ожидание задачи;
анализ является нулевым, однако он объявлен в строке 78 как :
public AnalysisResultType Analysis { get; set; } = default(AnalysisResultType);

есть какие-нибудь предложения по запуску образца?

Что я уже пробовал:

/// <summary> Executes the analysis operation asynchronously, then returns either the
      ///     result, or any exception that was thrown. </summary>
      /// <param name="frame"> The frame. </param>
      /// <returns> A Task<NewResultEventArgs> </returns>
      protected async Task<NewResultEventArgs> DoAnalyzeFrame(VideoFrame frame)
      {
          CancellationTokenSource source = new CancellationTokenSource();

          // Make a local reference to the function, just in case someone sets
          // AnalysisFunction = null before we can call it.
          var fcn = AnalysisFunction;
          if (fcn != null)
          {
              NewResultEventArgs output = new NewResultEventArgs(frame);
              var task = fcn(frame);
              LogMessage("DoAnalysis: started task {0}", task.Id);
              try
              {
                  if (task == await Task.WhenAny(task, Task.Delay(AnalysisTimeout, source.Token)))
                  {
                      output.Analysis = await task;
                      source.Cancel();
                  }
                  else
                  {
                      output.TimedOut = true;
                  }
              }
              catch (Exception ae)
              {
                  output.Exception = ae;
              }

              LogMessage("DoAnalysis: returned from task {0}", task.Id);

              return output;
          }
          else
          {
              return null;
          }
      }

George Swan

Я бы не стал утруждать себя созданием инфраструктуры отмены для задачи, которая просто топчется на месте. Я просто позволю ему угаснуть.

George Swan

Когда асинхронный метод отменяется в режиме отладки с включенной опцией "только мой код", Visual Studio прерывается и создает исключение. Попробуйте запустить его в режиме выпуска и посмотрите, решит ли это проблему. Если это так, снимите флажок "Включить только мой код" в разделе Инструменты, Параметры, отладка, Общие сведения.

1 Ответов

Рейтинг:
1

OriginalGriff

Поговорите с авторами: если вы перейдете на свою страницу ссылок, то найдете строку:

Вопросы поддержки: переполнение стека[^]

Перейдите по ссылке и спросите их.