■ Proto.Actor를 시작하는 방법을 보여준다.
▶ HelloMessage.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
namespace TestProject; /// <summary> /// 헬로우 메시지 /// </summary> public class HelloMessage { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region 이름 - Name /// <summary> /// 이름 /// </summary> public string Name { get;private set; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - HelloMessage(name) /// <summary> /// 생성자 /// </summary> /// <param name="name">이름</param> public HelloMessage(string name) { Name = name; } #endregion } |
▶ HelloActor.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using Proto; namespace TestProject; /// <summary> /// 헬로우 액터 /// </summary> public class HelloActor : IActor { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Public #region 수신하기 (비동기) - ReceiveAsync(context) /// <summary> /// 수신하기 (비동기) /// </summary> /// <param name="context">컨텍스트</param> /// <returns>태스크</returns> public Task ReceiveAsync(IContext context) { if(context.Message is HelloMessage helloMessage) { Console.WriteLine($"Hello {helloMessage.Name}"); } return Task.CompletedTask; } #endregion } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using Proto; namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { ActorSystem system = new ActorSystem(); Props helloProps = Props.FromProducer(() => new HelloActor()); PID helloPID = system.Root.Spawn(helloProps); system.Root.Send(helloPID, new HelloMessage("World")); Console.WriteLine("프로그램을 종료하기 위해서 아무 키나 눌러주시기 바랍니다."); Console.ReadKey(false); } #endregion } |