Из этого кода не очевидно, что на самом деле пакет Azure не знает, как определить задачу.Задание содержит задания, но задание не имеет ссылки на задание, на котором оно выполняется.И идентификатор задачи также не идентифицирует задачу глобально, он должен быть уникальным только внутри задания.
Это, вероятно, означает здесь «несвязанные объекты».Монитор просто не понимает, что смотреть.На самом деле, если строка WhenAsync
прокомментирована, следующая выдает аналогичную InvalidOperationException: 'The property ExecutionInformation cannot be read while the object is in the Unbound state.'
Так что правильный путь - ссылаться на задачу через задание:
using (var client = _CreateBatchClient())
{
var monitor = client.Utilities.CreateTaskStateMonitor();
var id = Guid.NewGuid().ToString();
var taskToAdd = new CloudTask(id, "echo hello world");
await client.JobOperations.AddTaskAsync("Test", taskToAdd);
var taskToTrack = await client.JobOperations.GetTaskAsync("Test", id);
await monitor.WhenAll(new List<CloudTask> { taskToTrack }, TaskState.Completed, _timeout);
}
Сравните:
И чтобы получить информацию о результате, нужно снова «найти» задачу в задании,или это будет ноль.