发出消息而不锁定exe

时间:2012-03-12 15:26:59

标签: c#

我基本上有两个程序:

  1. MAIN.EXE
  2. Update.exe的
  3. 更新会创建一个标记文件(update.inprogress),以便在更新过程中无法运行main。

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

    我只有一个问题。如果更新正在进行中,主程序将在没有并且在他们尝试进入的原因时关闭。我需要告诉他们程序正在更新以防止他们告诉我们世界已经结束......

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

    我正在考虑打开记事本并在那里留言,但这似乎是一种糟糕的做法。

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

    任何人都有更好的主意吗?


    澄清:

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

2 个答案:

答案 0 :(得分:1)

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

例如,如果需要更新(您可以通过adding a version number to your main.exe and checking it)完成此更新,update.exe将创建您的update.inprogress文件并运行更新。然后,如果另一个update.exe实例运行,它将看到update.inprogress文件,并提醒用户更新正在进行并自行终止而不占用main.exe。如果update.exe运行时不需要更新且update.inprogress不存在,则会调用main.exe programmatically

答案 1 :(得分:0)

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