用c#.NET做的托盘程序,在关机时由于该托盘的存在,计算机不能关机或重起。谁知道是什么原因?如何处理?
#region 托盘控制函数
/// <summary>
/// 隐藏 Form
/// </summary>
public void HideApp()
{
this.WindowState = FormWindowState.Minimized;
this.notifyIcon_Com.Visible = true;
Hide();
}
/// <summary>
/// 显示 Form
/// </summary>
public void ShowApp()
{
Show();
this.Visible = true;
this.WindowState = FormWindowState.Normal;
//this.notifyIcon.Visible = false;
}
/// <summary>
///重载关闭事件
/// </summary>
/// <param name="e"></param>
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
HideApp();
}
/// <summary>
/// 退出函数
/// </summary>
private void ExitApp()
{
if (ISCommunicate == true)
{
ECMS.ControlHelper.ECSMessage.Show(MesType.Warning, "通信的过程中不能退出通信程序!");
return;
}
notifyIcon_Com.Visible = false;
base.Dispose();
notifyIcon_Com.Dispose();
System.Diagnostics.Process.GetCurrentProcess().Kill();
Application.ExitThread();
Application.Exit();
}
/// <summary>
/// Form大小改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_SizeChanged(object sender, System.EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
HideApp();
}
}
private void KillXSTCOM()
{
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process p in ps)
{
if (p.ProcessName.ToLower() == "Moons.ECMS.XSTComm".ToLower())
{
p.Kill();
}
}
}
#endregion