C# CSCore不在windows服务中工作

C# CSCore不在windows服务中工作,c#,service,windows-services,cscore,C#,Service,Windows Services,Cscore,我有一个程序,它使用库来检测正在播放音频的应用程序,并通过web服务检索有关它们的一些信息 它作为控制台应用程序工作,但我想让它作为windows服务运行。我把它改成了windows服务,只移动了几行调用初始化和关机功能的代码 并不是说我已经完成了AudioSessionManager2.GetSessionNumerator()。计数始终为1。它返回的唯一会话是ID为0的进程。(注意:我的工作控制台版本的程序总是返回进程0,以及播放音频的所有其他进程) 我的VolumeManager类与控制台

我有一个程序,它使用库来检测正在播放音频的应用程序,并通过web服务检索有关它们的一些信息

它作为控制台应用程序工作,但我想让它作为windows服务运行。我把它改成了windows服务,只移动了几行调用初始化和关机功能的代码

并不是说我已经完成了AudioSessionManager2.GetSessionNumerator()。计数始终为1。它返回的唯一会话是ID为0的进程。(注意:我的工作控制台版本的程序总是返回进程0,以及播放音频的所有其他进程)

我的VolumeManager类与控制台应用程序版本完全相同,但不起作用。我不知道如何调试它更多。我检查了空对象,并确保调用了所有对象

public List<AudioSessionControl2> GetSessions()
{
    List<AudioSessionControl2> sessions = new List<AudioSessionControl2>();

    if (sessionManager != null)
    {
        Log("Session Count: " + sessionManager.GetSessionEnumerator().Count);  //THIS IS AWAYS 1
    }

    foreach (var session in sessionManager.GetSessionEnumerator())
    {
        AudioSessionControl2 session2 = session.QueryInterface<AudioSessionControl2>();
        Log("Session2 Process: " + session2.Process.Id); //AWAYS 0

        if (session2 != null && session2.Process != null && session2.Process.MainWindowTitle != null && session2.Process.MainWindowTitle != "")
        {
            Log("Added session"); //NOT CALLED BECAUSE THE PROCESS WITH ID 0 HAS NO TITLE
            sessions.Add(session2);
        }
    }

    return sessions;
}
public List GetSessions()
{
列表会话=新列表();
if(sessionManager!=null)
{
日志(“会话计数:”+sessionManager.GetSessionNumber().Count);//这是AWAYS 1
}
foreach(sessionManager.getsessionnumerator()中的var会话)
{
AudioSessionControl2 session2=session.QueryInterface();
日志(“Session2进程:”+Session2.Process.Id);//远离0
if(session2!=null&&session2.Process!=null&&session2.Process.MainWindowTitle!=null&&session2.Process.MainWindowTitle!=“”)
{
日志(“添加的会话”);//未调用,因为ID为0的进程没有标题
增列(第2期);
}
}
返回会议;
}
为什么它不能作为一种服务工作

谢谢



编辑:我已将此作为一个问题发布在GitHub回购项目上。希望@thefiloe能够帮助我解决这个问题。

若要了解您必须为服务添加一些调试,您可以开始在事件查看器中查看一些日志。然后尝试编写一些代码,确保条目为Event.log,以查找代码的哪个部分失败。@ashishraaj在上面的脚本中,您可以看到我正在使用log(),它将消息写入EventLog。我希望我不需要下载CSCore库源代码并调试其中的一部分。你找到解决方案了吗?我也有同样的问题。不,我没有让它在windows服务中工作。我只是制作了一个没有窗口的wpf应用程序,并在注册表中添加了一个键,这样它就会自动启动。要了解您必须向服务添加一些调试,您可以开始在事件查看器中查看一些日志。然后尝试编写一些代码,确保条目为Event.log,以查找代码的哪个部分失败。@ashishraaj在上面的脚本中,您可以看到我正在使用log(),它将消息写入EventLog。我希望我不需要下载CSCore库源代码并调试其中的一部分。你找到解决方案了吗?我也有同样的问题。不,我没有让它在windows服务中工作。我只是制作了一个没有窗口的wpf应用程序,并在注册表中添加了一个键,这样它就会自动启动。