I'm trying to come up with an unobtrusive way to to display minor error messages to a user. So I've added a statusbar to my form,
    <StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
        <TextBlock Name="statusText">Ready.</TextBlock>
    </StatusBar>
And then when they click an "Add" button, it should do some stuff, or display an error message:
private void DownloadButton_Click(object sender, RoutedEventArgs e)
{
    addressBar.Focus();
    var url = addressBar.Text.Trim();
    if (string.IsNullOrEmpty(url))
    {
        statusText.Text = "Nothing to add.";
        return;
    }
    if (!url.Contains('.'))
    {
        statusText.Text = "Invalid URL format.";
        return;
    }
    if (!Regex.IsMatch(url, @"^\w://")) url = "http://" + url;
    addressBar.Text = "";
But the message just sits there for the life of the app... I think I should reset it after about 5 seconds... how can I set a timer to do that?
Bonus: How do I give it a nifty fade-out effect as I do so?
I've created a System.Timers.Timer,
    private Timer _resetStatusTimer = new Timer(5000);
    void _resetStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        statusText.Text = "Ready";
    }
But the Elapsed event runs on a different thread than the UI, which it doesn't like... how to I get around that?
 
     
     
    