【发布时间】:2019-03-06 01:11:05
【问题描述】:
我有一个轮询在线 API 的 C# 服务 (.NET 4.6.2)。与此相关的还有一个托盘图标。服务应该保持托盘图标运行,图标应该保持服务运行。
如果服务因任何原因必须重新启动托盘图标,那么它会这样做,但图标不会回来。我正在尝试解决这个问题,因为用户认为如果图标不存在,它就不起作用。当他们重新启动应用程序并取回图标时,它会运行:
Process process = Process.GetCurrentProcess();
var dupl = (Process.GetProcessesByName(process.ProcessName));
if (dupl.Length > 1)
{
foreach (var p in dupl)
{
if (p.Id != process.Id)
p.Kill();
}
}
以确保任何时候都只有一个副本。我意识到服务不应该直接访问 UI,但是没有间接方法吗?我可以通过另一个 DLL 或其他东西传递我的调用吗?
我对此进行了相当多的研究,发现很多资源最终都已过时。即使是去年的这个,看起来很有希望也行不通。 How to create process as user with arguments
此服务部署在从 Windows 32 位到 Windows 10 的计算机上。并不总是有用户登录,但为了简单起见,我们假设有,我可以稍后处理其余的错误。
【问题讨论】:
标签: c# user-interface service