【发布时间】:2011-04-20 07:49:51
【问题描述】:
我正在尝试创建一个将在特定时间执行操作的应用程序(很像 Windows 任务计划程序)。我目前正在使用 Process.Start() 来启动任务所需的文件(或 exe)。
我通过调用文件(.mp3)来启动一个进程,该进程启动 WMP(因为它是默认应用程序)。到目前为止,一切都很好。现在我想杀死那个进程。我知道在这种情况下 Process.Start(string, string) 不返回任何内容(C# 中为 null)是正常行为。
所以我问当我通过 Process.Start(string, string) 调用 WMP 时如何关闭它??
编辑:
请注意,我不是直接使用 Process.Start() 打开 WMP,这是我运行该进程的行:
VB: Me._procs.Add(Process.Start(Me._procInfo))C#:this._procs.Add(Process.Start(this._procInfo))
_procInfo 是一个 ProcessStartInfo 实例。 _procInfo.FileName 是“C:\route\myFile.mp3”。这就是 WMP 打开的原因。在任何情况下,所有的 Start() 方法,除了返回布尔值的 instance-one 之外,什么都不返回(在 C# 中为 null),因为 WMP 不是直接创建的进程(请注意 WMP 正在运行并且歌曲确实播放)。
【问题讨论】:
-
据我所知,
Process.Start只会在没有实际启动进程的情况下返回null,例如重用现有流程来加载文档(在您的情况下为 mp3 文件)。你真的想杀死一个你的代码实际上没有启动的进程吗? -
@Ani - 静态 Start 调用全部返回 Process 但成员函数返回 bool
-
@Steve Townsend:是的,但我相信 OP 正在谈论静态方法。如果对非空
Process对象的引用已经可用,则问题不存在。 -
@0xA3,我的错 :),混淆了静态函数和成员函数
-
这是我正在使用的重载:Process.Start(Me._procInfo)。这会打开 WMP 但什么也不返回。