【问题标题】:Check that application is not running on other user account c#检查应用程序是否未在其他用户帐户 c# 上运行
【发布时间】:2018-11-07 22:35:43
【问题描述】:

我试图限制我的应用程序在机器级别具有多个实例,即一台计算机将有多个用户登录,并且出于性能原因,该应用程序只需要一个实例。因此,如果用户 A 启动应用程序,用户 B 应该只收到一条消息,表明该应用程序已经在用户 A 的帐户上运行。现在,在您开始对我进行有关流程的培训之前,我已经尝试过了,但它不起作用,因为我的应用程序要检查类似的流程是否正在运行,它需要启动流程(应用程序),在这种情况下,应用程序永远不会开始。

我正在使用它来限制多个实例,它效果很好,但它只适用于用户级别。

Microsoft.VisualBasic.ApplicationServices

public class SingleInstanceApplication : WindowsFormsApplicationBase
{
    private SingleInstanceApplication()
    {
        base.IsSingleInstance = true;
    }

    public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
    {
        SingleInstanceApplication app = new SingleInstanceApplication();
        app.MainForm = f;
        app.StartupNextInstance += startupHandler;
        app.Run(Environment.GetCommandLineArgs());
    }
}

任何帮助或建议将不胜感激......

【问题讨论】:

标签: c# winforms instance startup


【解决方案1】:

用户如何访问应用程序?您可以创建检查进程的批处理脚本,如果一个正在运行,那么脚本根本不会启动应用程序。不确定您是否想在应用程序中以编程方式或通过其他方式解决此问题。但是,如果您不希望所述应用程序的第二个实例运行您最好的选择是在您的应用程序之外,例如批处理脚本。

还有这个:cross-user C# mutex。 在我工作的地方,我们为特定的 SQL 表设置了标志,以防止多个用户同时编辑记录。或者您可以在用户登录时创建一个隐藏的锁定文件,然后在用户退出后删除该文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多