What I want to do is ensure that if the only reference to my observer is the observable, it get's garbage collected and stops receiving messages.
Say I have a control with a list box on it called Messages and this code behind:
//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));
}
}
Which is connecting to this source:
//Long lived location for message store
static class MySource
{
public readonly static IObservable<string> IncomingMessages = new ReplaySubject<string>;
}
What I don't want is to have the Message Display being kept in memory long after it's no longer visible. Ideally I'd like a little extension so I can write:
MySource.IncomingMessages.ToWeakObservable().Subscribe(m => Messages.Items.Add(m));
I also don't want to rely on the fact that MessageDisplay is a user control as I will later want to go for an MVVM setup with MessageDisplayViewModel which won't be a user control.