MailDispatcher and NotifyIcon
<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);
}
}
}
Related examples in the same category