如何使已经运行的C#Windows窗体应用程序能够在命令行运行时从命令行接收命令?
例如:如果我的应用程序正在播放视频,那么我希望能够在命令行“MyApp / stop”上键入,以便在应用程序仍在运行时停止播放视频而不退出当前会话
答案 0 :(得分:4)
从您的问题看来,您的第一个进程似乎仍在运行,并且您启动了它的第二个实例,并希望该实例与第一个实例进行通信。
您正在寻找的是inter-process communication(IPC)。在.NET中执行此操作的标准方法是使用Windows Communication Foundation(WCF)。
答案 1 :(得分:2)
通过发送类似的命令,您将启动另一个进程。某些命令行参数可以执行某种IPC来发送正在运行的应用程序的“主”实例。
答案 2 :(得分:2)
一种方法是让你的应用程序成为单身人士,每当运行另一个实例时,它会将参数传递给已经运行的进程。
示例:http://www.codeproject.com/KB/cs/SingletonApplication.aspx
答案 3 :(得分:1)
不改变您的设计结构并假设您的应用程序是一个独立的应用程序(在本地PC上运行),
一种方法是使应用程序的一个线程等待(WaitOne())以获取命名的互斥锁或信号量(link text)。
当您启动应用程序(第二个实例)时,您将解析命令行(通过args参数)。如果args [0]包含“/ stop”命令,则“释放()”命名的互斥锁/信号量。然后,您的线程(在第一个实例中)将被唤醒以停止播放视频。
然后再说一遍(如上所述),一个更简单的解决方案是在应用程序中有一个STOP按钮,用户可以点击它。