Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight检测正在运行的sllauncher.exe_C#_Silverlight - Fatal编程技术网

C# Silverlight检测正在运行的sllauncher.exe

C# Silverlight检测正在运行的sllauncher.exe,c#,silverlight,C#,Silverlight,我们正在Windows XP设备上运行Silverlight浏览器外应用程序。偶尔,此应用程序会挂起并必须关闭。当我们在这种情况下尝试重新启动应用程序时,应用程序会以一种奇怪的状态启动。我们在TaskManager中看到多个sllauncher.exe实例正在运行。解决方案是终止sllauncher.exe实例并再次启动应用程序(当然,真正的解决方案是处理导致应用程序挂起的问题…) 我想做的是,在启动我们的silverlight应用程序时,检测sllauncher.exe的多个实例是否正在运行,

我们正在Windows XP设备上运行Silverlight浏览器外应用程序。偶尔,此应用程序会挂起并必须关闭。当我们在这种情况下尝试重新启动应用程序时,应用程序会以一种奇怪的状态启动。我们在TaskManager中看到多个sllauncher.exe实例正在运行。解决方案是终止sllauncher.exe实例并再次启动应用程序(当然,真正的解决方案是处理导致应用程序挂起的问题…)


我想做的是,在启动我们的silverlight应用程序时,检测sllauncher.exe的多个实例是否正在运行,并向用户显示一条消息,指示应采取的纠正措施。我的浏览器外silverlight应用程序可以访问正在运行的进程列表吗?

很有可能,您也可以通过p/Invoke中的TerminateProcess杀死它们,只要您拥有提升的权限

我正在开发一个看板解决方案(一个长期运行的远程控制视频播放器),最近我遇到了一个非常类似的问题。由于我的崩溃非常罕见,而且我没有任何日志记录,我也决定采用“重新启动”的方式来缓解问题

不过,我的做法略有不同,因为我从silverlight运行了一个本机(WPF)卫星应用程序,该应用程序嵌入到xap中。由于它是由silverlight player启动的,因此它可以在启动时获取进程id作为参数。然后,它与silverlight player进行长时间的聊天(通过http,启动时也会提供端口),如果silverlight合作伙伴突然沉默,它会重新启动它

重新启动是通过首先尝试关闭主窗口来完成的,如果在短时间等待后仍不起作用,它将被终止

因为卫星是.NET,所以我不需要任何p/Invoke来实现该逻辑

如果你想完全在Silverlight中进行,请看一看


对于进程列表,kernel32.dll中的GetConsoleProcessList听起来不错。这些代码片段在WPF和Silverlight中都可以工作。

很可能,并且您也可以在p/Invoke中使用TerminateProcess杀死它们,只要您拥有提升的权限

我正在开发一个看板解决方案(一个长期运行的远程控制视频播放器),最近我遇到了一个非常类似的问题。由于我的崩溃非常罕见,而且我没有任何日志记录,我也决定采用“重新启动”的方式来缓解问题

不过,我的做法略有不同,因为我从silverlight运行了一个本机(WPF)卫星应用程序,该应用程序嵌入到xap中。由于它是由silverlight player启动的,因此它可以在启动时获取进程id作为参数。然后,它与silverlight player进行长时间的聊天(通过http,启动时也会提供端口),如果silverlight合作伙伴突然沉默,它会重新启动它

重新启动是通过首先尝试关闭主窗口来完成的,如果在短时间等待后仍不起作用,它将被终止

因为卫星是.NET,所以我不需要任何p/Invoke来实现该逻辑

如果你想完全在Silverlight中进行,请看一看


对于进程列表,kernel32.dll中的GetConsoleProcessList听起来不错。这些代码片段在WPF和Silverlight中都可以使用。

我们就是这样做的

我们创建了一个消息接收器。如果我们无法使用相同的密钥侦听,那么我们假设另一个实例正在运行。然后我们询问用户他/她是想杀死当前实例还是已经在运行的实例。在received message事件处理程序中,如果消息传入,我们将关闭窗口。这不是最优雅的解决方案,但它确实有效。最重要的是要提请注意多个实例正在运行这一事实

try
{
    LocalMessageReceiver receiver = new LocalMessageReceiver("There can be only one");
    receiver.Listen();
    receiver.MessageReceived += receiver_MessageReceived;
}
catch (ListenFailedException)
{
    log.Info("Another instance is running.");
    // Display message, take corrective action etc.
    interactionService.ShowMessage(Strings.OneInstanceAllowed,
                                           Strings.ApplicationName, DialogButton.OKCancel, DialogImage.Question,
                                           OnCloseClientResponse);
}

我们就是这样做的

我们创建了一个消息接收器。如果我们无法使用相同的密钥侦听,那么我们假设另一个实例正在运行。然后我们询问用户他/她是想杀死当前实例还是已经在运行的实例。在received message事件处理程序中,如果消息传入,我们将关闭窗口。这不是最优雅的解决方案,但它确实有效。最重要的是要提请注意多个实例正在运行这一事实

try
{
    LocalMessageReceiver receiver = new LocalMessageReceiver("There can be only one");
    receiver.Listen();
    receiver.MessageReceived += receiver_MessageReceived;
}
catch (ListenFailedException)
{
    log.Info("Another instance is running.");
    // Display message, take corrective action etc.
    interactionService.ShowMessage(Strings.OneInstanceAllowed,
                                           Strings.ApplicationName, DialogButton.OKCancel, DialogImage.Question,
                                           OnCloseClientResponse);
}

此外,如果你考虑下我的路线,给我一封邮件,我给你发送一些代码。此外,如果你考虑下我的路线,给我一封邮件,我给你发送一些代码。