相关疑难解决方法(0)

创建单实例WPF应用程序的正确方法是什么?

在.NET(而不是Windows窗体或控制台)下使用C#和WPF ,创建只能作为单个实例运行的应用程序的正确方法是什么?

我知道这与一些叫做互斥的神秘事物有关,我很少能找到一个不愿意停下来解释其中一个是什么的人.

代码还需要通知已经运行的实例用户尝试启动第二个,并且如果存在任何命令行参数,也可以传递.

.net c# wpf mutex

631
推荐指数
16
解决办法
19万
查看次数

防止多个实例 - 还要处理命令行参数?

我正在处理来自Windows的应用程序关联扩展文件.所以当你从Windows双击一个文件时,它将执行我的程序,我从那里处理文件,如:

procedure TMainForm.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ParamCount -1 do
  begin
    if SameText(ExtractFileExt(ParamStr(i)), '.ext1') then
    begin
      // handle my file..

      // break if needed
    end else
    if SameText(ExtractFileExt(ParamStr(i)), '.ext2') then
    begin
      // handle my file..

      // break if needed
    end else
  end;
end;
Run Code Online (Sandbox Code Playgroud)

这几乎是我想要的,但是当我测试时,我意识到它不考虑只使用我的程序的一个实例.

因此,例如,如果我从Windows中选择了多个文件并同时打开它们,这将创建与我的程序相同数量的实例,并打开文件数.

什么是一个很好的方法来解决这个问题,以便不是打开我的程序的几个实例,而是打开Windows的任何其他文件只会集中回到唯一的实例,我正常处理文件?

谢谢

UPDATE

我在这里找到了一篇很好的文章:http://www.delphidabbler.com/articles? article = 13&part = 2我认为这就是我需要的,并展示了如何使用rhooligan提到的Windows API.我现在要读完它..

delphi

12
推荐指数
1
解决办法
5452
查看次数

如何在C#中获取使用给定文件名的PID?

如何获取使用给定文件名和互斥锁名称的进程的PID?(不是通过自定义内核驱动程序,而是在用户模式下的C#中.)

更新:感谢Daniel Renshaw,我找到了一个列出所有带PID的句柄的脚本.(使用未记录和未解冻的功能.)

c# winapi mutex file handle

8
推荐指数
1
解决办法
498
查看次数

C# - 如何获取互斥锁的所有者名称

我在两个应用程序之间有一个共享的互斥锁.我想创建一个管理控制台,显示当前所有者的互斥锁名称.

如何获取当前拥有Mutex的应用程序名称?

c# synchronization mutex

7
推荐指数
1
解决办法
2234
查看次数

标签 统计

c# ×3

mutex ×3

.net ×1

delphi ×1

file ×1

handle ×1

synchronization ×1

winapi ×1

wpf ×1