我正在开发一个桌面应用程序(C# 4.0 Winforms),其中一个要求是程序可以多次打开。但是,我不希望用户能够多次打开给定文档(可能会发生坏事)。
基本上我希望它的功能类似于 MS Word(至少是较新版本),如果您尝试打开一个已经打开的文档,它会将您带到已经打开该文档的程序实例。
我大部分时间都在做 Web 开发,所以可能有一些我不知道的简单解决方案。
所以我真的有两种不同的需求。
1) 防止文件被打开超过一次 2) 如果他们试图再次打开它,将实例带到前台。
我可以想到几种方法来处理#1,但我很好奇其他人是如何解决这个问题的。
实际上,我真的不知道从哪里开始尝试让#2 工作,而无需制作一些保持打开状态并创建子程序的主表单/流程。IE 创建了另一个窗体,它实际控制当前程序主窗体的打开和关闭,因此它更像是一种“选项卡式”体验,而不是实际的多窗口体验。更像是老式的 MDI(仍然会留下问题 #1)。
此处的任何帮助(要阅读的站点、要查看的名称空间等)将不胜感激。
编辑 -我看到这已被标记为重复,并且“重复”位于页面顶部。我的要求之一是程序必须能够多次打开。你们还看帖子吗?其他人可以进来投票重新讨论这个问题吗?
进一步编辑 -我采用了 Mutex 的想法,以防止程序多次打开同一个文档。我从来没有找到一种简单的方法来确定程序的哪个实例打开了文档并将其放在前面,所以我现在放弃了,只是弹出一个消息框告诉他们它已经打开了。命名管道似乎有点矫枉过正,因为它不完全是我想要做的,并且会涉及很多开销(而且 WCF 不是世界上最简单的事情),所以任何进一步的帮助将不胜感激。