考虑我想分别运行 APP.exe 2 次。我需要定义一个在所有应用程序域中共享的变量。例如,我的代码中有一个整数 X,我在 app.exe(1) 中更改了它(表示应用程序的第一次运行),然后想在 app.exe(2) 中使用它(同一个应用程序的第二次运行)。但是每次变量初始化并且每个运行的应用程序都有它的 X。我知道如果我为 X 设置静态,这不会发生在 Web 应用程序中,但是对于 WPF 和 Winform,应用程序域是不同的,并且 X 是不同的。实际上我真正的问题是锁定实体模型。我想防止每个应用程序实例访问模型。我知道通过 SQL 可以实现,但我想在 C# 中锁定一个公共共享变量。
已编辑
我使用了 Mutex,但问题仍然存在。请看我的例子
private static Mutex mut = new Mutex();
public void Dopessimistic(int id , string name)
{
mut.WaitOne();
{
MessageBox.Show("nm1");
}
}
我运行我的 app.exe 2 次。我希望该消息将只显示一次,因为我没有释放互斥锁,但对于 app.exe 的每次运行它都会起作用并显示该消息。实际上,互斥锁似乎不是在所有应用程序之间共享的,并且每次运行都有自己的互斥锁!