C# 在不锁定exe的情况下发出消息

C# 在不锁定exe的情况下发出消息,c#,C#,我基本上有两个项目: main.exe update.exe 更新创建一个标志文件(Update.inprogress),以便在更新过程中无法运行main 如果main打开并且该文件存在,它将立即退出以防止使用中的程序发生冲突 我只有一个问题。如果更新正在进行中,则当主程序尝试进入时,主程序会无故关闭。我需要告诉他们程序正在更新,以防止他们打电话给我们世界末日 我的问题是,如何在不占用main.exe的情况下发出更新正在进行的消息?如果我从main.exe发布它,那么它将被使用并且无法更新 我想

我基本上有两个项目:

  • main.exe
  • update.exe
  • 更新创建一个标志文件(Update.inprogress),以便在更新过程中无法运行main

    如果main打开并且该文件存在,它将立即退出以防止使用中的程序发生冲突

    我只有一个问题。如果更新正在进行中,则当主程序尝试进入时,主程序会无故关闭。我需要告诉他们程序正在更新,以防止他们打电话给我们世界末日

    我的问题是,如何在不占用main.exe的情况下发出更新正在进行的消息?如果我从main.exe发布它,那么它将被使用并且无法更新

    我想打开记事本,在里面放条信息,但这似乎是一种不好的方式

    我还可以创建另一个只显示此消息的exe,但是,如果我必须更新它,它也将被使用。。有点违背我的目的

    有人有更好的主意吗


    澄清:


    这是一个对等网络。更新可以在工作站XYZ上运行,有人可能试图进入工作站ABC的main.exe。这就是我使用标志文件的原因。我必须检查另一台工作站上运行的进程。

    我建议从update.exe创建一个线程,以检查main.exe进程是否存在。如果它出现,请使用update.exe中的消息提醒用户。

    我假设当update.exe运行时,它不需要自我更新?如果是这种情况,您可以修改update.exe以在不需要更新的情况下调用main.exe


    例如,如果需要更新(您可以通过,update.exe将创建您的update.inprogress文件并运行更新。然后,如果update.exe的另一个实例运行,它将看到update.inprogress文件并提醒用户更新正在进行,并在不占用main.exe的情况下自行终止。如果update.exe在不需要更新时运行,则update.inprogress不存在,它将调用main.exe。

    我在我的问题中添加了更多内容来澄清它。您可以从update.exe监视进程,并在启动main.exe时通知用户。查看此内容可以了解一个想法:Massimiliano Peluso是对的。既然您可以打开main来检查标志,我不明白为什么您不能显示混乱年龄也一样。检查标志后显示一条消息。当您打开main时,您正在创建一个新进程,因此最好在它上加一个nag屏幕。如果main.exe保持打开状态,则main.exe现在正在使用中。我将立即关闭main.exe,使其不被使用,以便update.exe可以更新main.exe,而无需获取exe假设MAIN.EXE正在使用中。这就是全部问题所在,我不想让MAIN.EXE继续运行,否则我会在我的update.EXE程序中与它发生冲突。弹出一个带有“确定”按钮的nag屏幕,通知用户需要单击“确定”以完成更新。@ErocM可能会出现一些情况,如MAIN.EXE为alr时会发生什么情况运行update.exe时已经开始运行了,但我相信您可以在出现这些问题时解决它们。