<Window x:Class="ActivationSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ActivationSample" > <Grid> <ListBox Name="mailListBox" /> </Grid> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Forms; using System.Windows.Threading; namespace ActivationSample { public partial class MainWindow : Window { private bool isActive; private MailDispatcher mailDispatcher = new MailDispatcher(); private NotifyIcon newMailNotifyIcon = new NotifyIcon(); public MainWindow() { InitializeComponent(); this.mailDispatcher.MailDispatched += mailDispatcher_MailDispatched; this.mailDispatcher.Start(); // this.newMailNotifyIcon.Icon = ActivationSample.Properties.Resources.NewMailIcon; this.isActive = true; this.newMailNotifyIcon.Visible = false; } public void AddMailItem(string data) { this.mailListBox.Items.Add(data); } void mailDispatcher_MailDispatched(object sender, EventArgs e) { ((MainWindow)this).AddMailItem(DateTime.Now.ToString()); if (!this.isActive && this.newMailNotifyIcon.Visible == false) { this.newMailNotifyIcon.Visible = true; } } // void App_Deactivated(object sender, EventArgs e) // { // this.isActive = false; // } // void App_Exit(object sender, ExitEventArgs e) // { // this.mailDispatcher.Stop(); // } } public class MailDispatcher { DispatcherTimer timer; public event EventHandler MailDispatched; public void Start() { this.timer = new DispatcherTimer(); timer.Tick += timer_Tick; timer.IsEnabled = true; timer.Interval = new TimeSpan(0, 0, 5); } public void Stop() { this.timer.IsEnabled = false; this.timer.Tick -= timer_Tick; this.timer = null; } void timer_Tick(object sender, EventArgs e) { if (MailDispatched != null) MailDispatched(this, EventArgs.Empty); } } }