我怎样才能杀死客户端中的所有进程 运行 服务器上的程序(通过快捷方式)
How can i kill all processes in clients that run a program(by shortcut) at server
我在服务器上有一个程序(例如 \192.168.0.1\sharefolder\test.exe
)。我将程序的快捷方式放入客户端。用户可以通过该快捷方式 运行 程序。当我想在服务器中更新我的程序时,出现了一个错误 "file in use".. 现在,我如何才能终止客户端中 运行 我的程序(通过快捷方式)在服务器上的所有进程。
我使用此代码:
foreach (var process in Process.GetProcessesByName("quartus_pgm"))
{
process.kill();
}
//file.delete();
但是这段代码还不够,因为这段代码只终止了服务器上的进程 运行ning,但我仍然无法更新程序并发生错误..
Mahyar,你好!
我建议您使用.NET 提供的"Shadow Copying Assemblies" 机制。简而言之:
1. 你有 1 个应用程序 (exe),它引用了几个 dll(所有 logic/UI/... 的库)。
2. 你可以在不停止应用程序(exe)的情况下替换dll。
有关详细信息,您可以阅读此 MSDN article。
此方法可能需要对您的应用进行一些重构。
我在服务器上有一个程序(例如 \192.168.0.1\sharefolder\test.exe
)。我将程序的快捷方式放入客户端。用户可以通过该快捷方式 运行 程序。当我想在服务器中更新我的程序时,出现了一个错误 "file in use".. 现在,我如何才能终止客户端中 运行 我的程序(通过快捷方式)在服务器上的所有进程。
我使用此代码:
foreach (var process in Process.GetProcessesByName("quartus_pgm"))
{
process.kill();
}
//file.delete();
但是这段代码还不够,因为这段代码只终止了服务器上的进程 运行ning,但我仍然无法更新程序并发生错误..
Mahyar,你好!
我建议您使用.NET 提供的"Shadow Copying Assemblies" 机制。简而言之: 1. 你有 1 个应用程序 (exe),它引用了几个 dll(所有 logic/UI/... 的库)。 2. 你可以在不停止应用程序(exe)的情况下替换dll。
有关详细信息,您可以阅读此 MSDN article。
此方法可能需要对您的应用进行一些重构。