Event Handler를 이용하면 어떨까요??
//IMessageService.cs
namespace FullApp1.Services.Interfaces
{
public interface IMessageService
{
event EventHandler ReceivedMsg;
void ReceivedMsgAction();
string GetMessage();
}
}
//MessageService.cs
namespace FullApp1.Services
{
public class MessageService : IMessageService
{
public event EventHandler ReceivedMsg;
public void ReceivedMsgAction()
{
OnReceivedMsg(new EventArgs());
}
private void OnReceivedMsg(EventArgs eventArgs)
{
if (ReceivedMsg != null)
{
ReceivedMsg(this, eventArgs);
}
}
public string GetMessage()
{
return "message";
}
public MessageService()
{
Task.Run( async () =>
{
while (true)
{
OnReceivedMsg(new EventArgs());
await Task.Delay(1000);
}
});
}
}
}
//ViewAiewModel.cs
namespace FullApp1.Modules.ModuleName.ViewModels
{
public class ViewAViewModel : RegionViewModelBase
{
private string _message;
public string Message
{
get { return _message; }
set { SetProperty(ref _message, value); }
}
public ViewAViewModel(IRegionManager regionManager, IMessageService messageService) :
base(regionManager)
{
Message = messageService.GetMessage();
messageService.ReceivedMsg += MessageService_ReceivedMsg; ;
}
private void MessageService_ReceivedMsg(object sender, System.EventArgs e)
{
}
public override void OnNavigatedTo(NavigationContext navigationContext)
{
//do something
}
}
}