Проблема, с которой вы столкнулись, заключается в том, что сообщение, которое вы передаете в планировщик, new ProgressReport(requestId, _testedQuantity)
, - это то, что будет отправляться каждый раз. Поскольку вы передаете эти целочисленные значения по значению, объект будет иметь исходные значения для этих полей во время создания сообщения, и поэтому сообщение никогда не будет обновляться.
Если вы хотите быть в состоянии изменить содержимое, отправляемое в повторяющемся планировщике, вместо этого сделайте следующее:
var self = Self; // need a closure here, since ActorContext won't be available
_statusScheduler = Context.System.Scheduler.Advanced.ScheduleRepeatedlyCancelable(interval, interval, () => {
_reporterActor.Tell(new ProgressReport(requestId, _testedQuantity), self);
});
Это использование планировщика будет генерировать новое сообщение каждый раз, когда он вызывает функцию лямбда, и, таким образом, вы будете возможность включать обновленные целочисленные значения внутри вашего объекта.