Browse Source

Tray:增加 Instance 属性,作为唯一实例。

master
王厅 16 hours ago
parent
commit
ef25ba94b9
  1. 16
      Apewer.Windows/WinForm/Tray.cs

16
Apewer.Windows/WinForm/Tray.cs

@ -311,16 +311,22 @@ namespace Apewer.WinForm
#region run
/// <summary>唯一实例。</summary>
public static Tray Instance { get; private set; }
/// <summary>已启动的服务名称。</summary>
public static string ServiceName { get; private set; }
/// <summary>在当前线程运行托盘程序,并启动消息循环。</summary>
/// <param name="action">启动托盘后执行的程序。</param>
/// <summary>在当前线程运行托盘程序,并启动消息循环。此方法应在主线程中调用,并且此方法将阻塞当前线程。</summary>
/// <remarks>托盘启动后,将在后台线程执行参数中指定的程序。</remarks>
/// <param name="action">(在后台线程执行)启动托盘后执行的程序。</param>
/// <exception cref="ArgumentNullException" />
/// <exception cref="InvalidOperationException" />
[STAThread]
public static void Run(Action<Tray> action)
{
if (action == null) throw new ArgumentNullException(nameof(action));
if (Instance != null) throw new InvalidOperationException($"已存在实例,无法再次启动。");
Control.CheckForIllegalCrossThreadCalls = false;
Application.EnableVisualStyles();
@ -337,14 +343,14 @@ namespace Apewer.WinForm
}
}
var instance = new Tray(action);
Instance = new Tray(action);
// action.Invoke(instance);
Application.Run();
}
/// <summary>启动服务。</summary>
/// <param name="onStart">服务启动后执行的程序。</param>
/// <param name="onStop">停止服务时执行的程序。</param>
/// <param name="onStart">(在后台线程执行)服务启动后执行的程序。</param>
/// <param name="onStop">(同步执行)停止服务时执行的程序。</param>
public static void Service(Action onStart, Action onStop = null)
{
var processName = Process.GetCurrentProcess().ProcessName;

Loading…
Cancel
Save