【问题标题】:How do i list all opened application in a file using windows service C# .net?如何使用 Windows 服务 C# .net 在文件中列出所有打开的应用程序?
【发布时间】:2015-02-06 01:23:55
【问题描述】:

我发现了一段代码,它是用控制台应用程序编写的并且也可以工作。 这是代码..

            Process[] processlist = Process.GetProcesses();

            foreach (Process process in processlist)
            {
                if (!String.IsNullOrEmpty(process.MainWindowTitle))
                {
                    Console.WriteLine("Process: {0} ID :{1} Window Title :{2}", process.ProcessName, process.Id, process.MainWindowTitle);
                }
            } 

我已经修改了这样的代码......

            StreamWriter str = new StreamWriter("D:\\loop.txt", true);
            str.WriteLine("**** List of Application *********");

            Process[] processlist = Process.GetProcesses();

            foreach (Process process in processlist)
            {
                if (!String.IsNullOrEmpty(process.MainWindowTitle))
                {
                    str.WriteLine("Process: {0} ID :{1} Window Title :{2}", process.ProcessName, process.Id, process.MainWindowTitle);
                }
            }
            str.close();

但它在 Windows 服务中不起作用。我做错了吗?我是 Windows 服务的新手。有没有人可以帮助我?我应该怎么办?

【问题讨论】:

标签: c# .net windows service


【解决方案1】:

你忘了Close直播

引用:

您必须调用 Close 以确保所有数据都正确写入底层流。在调用 Close 之后,StreamWriter 上的任何操作都可能引发异常。如果磁盘空间不足,调用 Close 会引发异常。

更正的代码:

StreamWriter str = new StreamWriter("D:\\loop.txt", true);
str.WriteLine("**** List of Application *********");

Process[] processlist = Process.GetProcesses();

foreach (Process process in processlist)
{
   if (!String.IsNullOrEmpty(process.MainWindowTitle))
   {
       str.WriteLine("Process: {0} ID :{1} Window Title :{2}", process.ProcessName, process.Id, process.MainWindowTitle);
   }
}

str.Close(); // You need to close the stream

替代方案:Using

using (StreamWriter str = new StreamWriter("D:\\loop.txt", true))
{
     str.WriteLine("**** List of Application *********");

     Process[] processlist = Process.GetProcesses();

     foreach (Process process in processlist)
     {
          if (!String.IsNullOrEmpty(process.MainWindowTitle))
          {
            str.WriteLine("Process: {0} ID :{1} Window Title :{2}", process.ProcessName, process.Id, process.MainWindowTitle);
           }
      }
}

【讨论】:

  • 其实我已经关闭了流,这里我只是没有提到。感谢“使用”的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多