Windows Phone Silverlight 앱을위한 간단한 메시징 시스템을 만들고 있습니다.Silverlight WP7 메시징, WeakReference를 사용해야합니까? 그렇다면 어떻게해야합니까?
다른 개체가 수신/수신하려는 메시지 유형과 처리자로 처리 <> 대리인을 전달하는 메시징 개체에 가입하는 다양한 xaml 페이지 &입니다.
메시지가 페이로드되면 올바른 가입자에게 전송됩니다.
다음은 메시지 클래스로 원하는 초안입니다.
public class MessageBus
{
private List<Subscriber> subscribers;
public MessageBus()
{
subscribers = new List<Subscriber>();
}
public void Subscribe(string messageType, Action<object>subscriber){
subscribers.Add(new Subscriber(messageType, subscriber));
}
public void SendMessage(object message, string messageType)
{
foreach (Subscriber subscriber in subscribers)
{
if (subscriber.MessageType == messageType && subscriber.Reciever != null)
{
subscriber.Reciever(message);
}
}
}
}
public class Subscriber
{
public string MessageType { get; set; }
public Action<object> Reciever { get; set; }
public Subscriber(string messageType, Action<Object> reciever)
{
MessageType = messageType;
Reciever = reciever;
}
}
그래서 varius 가입자는 유형 Action으로 추가됩니다. 내가 알기로 이것은 원래 페이지/객체가 가비지 수집되는 것을 멈추게 할 것이다. (그렇지 않다면?) 그 참조가 항상 존재하기 때문에.
실제로 구독을 취소 할 수 없거나 항상 머물지는 못하고 메시징 큐가 응용 프로그램의 수명 동안 유지됩니다.
WeakReferences를 구현해야합니까? 그렇다면 어떻게해야합니까?
WeakReferences가 오버 헤드를 추가합니까?
사용중인 메모리가 작기 때문에이 점을 고려해 보는 것이 미친가요?
는 소리 다시 OnNavigatedFrom. 훨씬 간단 해! – Technium