我有一个服务在后台运行一组进程的情况。这些进程需要根据需要从 GUI 应用程序启动/停止。问题是正在运行的进程列表保存在旨在监视和控制它们的对象的内存中。此对象位于服务实例上,因此无法从 GUI 应用程序实例访问。我认为我需要将该对象转换为在机器上全局静态的 Singleton,例如 Mutex,以便我可以从 GUI 运行它的方法并让它们影响服务。示例代码如下,这不是我拥有的代码,而是它的简化版本。我对基于 Mutex 的 Singleton 的解决方案或更适合我需求的替代方案感兴趣。
namespace SystemWideSingleton
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.Write("Count = " + GlobalSingleton.Instance.Count++);
Console.ReadLine();
}
}
}
public class GlobalSingleton
{
static GlobalSingleton() { }
private GlobalSingleton()
{
Count = 0;
}
private static readonly GlobalSingleton _instance = new GlobalSingleton();
public static GlobalSingleton Instance { get { return _instance; } }
public int Count { get; set; }
}
}
我希望上面的代码作为两个控制台应用程序运行,并且每个应用程序共享输出。前任。
Application 1: Application 2:
-------------- --------------
0 0
1 3
2 4
5 7
6 8
任何帮助将不胜感激。
PS我知道现在我从单例中得到的只是它可以在同一个应用程序实例上的线程之间工作。我需要它跨机器上的实例工作。