サービスが一連のプロセスをバックグラウンドで実行している状況があります。これらのプロセスは、必要に応じて GUI アプリケーションから開始/停止する必要があります。問題は、実行中のプロセスのリストが、それらを監視および制御するように設計されたオブジェクトのメモリに保持されていることです。このオブジェクトはサービス インスタンス上にあるため、GUI アプリケーション インスタンスからはアクセスできません。私が必要だと思うのは、そのオブジェクトをミューテックスのように、マシン上でグローバルに静的なシングルトンに変換して、GUI からメソッドを実行し、サービスに影響を与えることができるようにすることです。以下にコード例を示します。これは私が持っているコードではなく、大幅に簡略化したバージョンです。Mutex ベースのシングルトンのソリューション、または私のニーズにより適した代替ソリューションに興味があります。
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; }
}
}
上記のコードが 2 つのコンソール アプリケーションとして実行され、各アプリケーションが出力を共有することが期待されます。元。
Application 1: Application 2:
-------------- --------------
0 0
1 3
2 4
5 7
6 8
どんな助けでも大歓迎です。
PSシングルトンから得られるのは、同じアプリケーションインスタンスのスレッド間で機能することだけです。マシン上のインスタンス全体で機能する必要があります。