Прежде всего, похоже, что вы используете актеров не так. Вы должны зарегистрировать один тип актера для хост-процесса. Например
ActorRuntime.RegisterActorAsync<Actor1>((context, actorType) =>
new ActorService(
context,
actorType,
() => new Actor1()))
.GetAwaiter()
.GetResult();
Если вы хотите общения между участниками, необходимо создать экземпляр актера и вызвать метод его интерфейс для сохранения данных. Затем, если вы хотите сохранить одни и те же данные в другом актере, вам нужно создать другой экземпляр. Actros по дизайну уникальные, отдельные объекты. Вы можете сделать это с одного места и создать двух актеров и сохранить данные отдельно, или вы можете создать второго актера с первого. Например,
var actor1Proxy = ActorProxy.Create<IActor1>(actorId, new Uri("fabric:/MyApp/Actor1"));
var actor2Proxy = ActorProxy.Create<IActor2>(actorId, new Uri("fabric:/MyApp/Actor2"));
actor1Proxy.SaveData(data);
actor2Proxy.SaveData(data);
Возможно, вам нужна надежная служба для хранения ваших данных. Пожалуйста, прочитайте this и this статей за дополнительной информацией об использовании актеров.
Да, в общем, вы должны принимать актеров в разных процессах, так как вы можете обновлять их независимо друг от друга. Однако в одном и том же процессе вы можете размещать несколько типов акторов. –
@ VipulM-MSFT да, у нас даже есть [ответ] (http://stackoverflow.com/a/38732867/2152061) об этом. – cassandrad