То, что я хочу сделать, это убедиться, что если только ссылка на моего наблюдателя - наблюдаемая, она получает сборки мусора и останавливает получение сообщений.
Скажем, у меня есть контроль со списком в нем называется сообщениями, и этот код позади:
//Short lived display of messages (only while the user's viewing incoming messages)
public partial class MessageDisplay : UserControl
{
public MessageDisplay()
{
InitializeComponent();
MySource.IncomingMessages.Subscribe(m => Messages.Items.Add(m));
}
}
, который подключается к данному источнику:
//Long lived location for message store
static class MySource
{
public readonly static IObservable<string> IncomingMessages = new ReplaySubject<string>;
}
Что я не хочу, это иметь возможность хранения отображения сообщения в памяти долго после того, как он больше не виден. В идеале я бы хотел немного расширения, поэтому я могу написать:
MySource.IncomingMessages.ToWeakObservable().Subscribe(m => Messages.Items.Add(m));
Я также не хочу положиться на то, что MessageSplay - это контроль пользователя, так как я позже хочу пойти на настройку MVVM с MessagedisPlayViewModel, который не будет быть контролем пользователя.