我在这里试图找到一种解决方案来控制我通过webforms启动的进程。
我知道使用System.Diagnostics.Process类启动和停止它非常容易。
我试图实现的是将数据发送到进程( terraria服务器)。基本上是服务器本身,当它被正确启动时,你可以在它里面写一些命令,比如kick/ban/save/exit等等。
我想写这些命令,但通过webforms应用程序进行远程控制。
我认为最近的解决方案是通过我编写的守护进程调用服务器,该守护进程将作为webforms命令和服务器应用程序之间的网关工作。这是做事情的正确方式吗?或者有没有更简单的方法呢?
发布于 2011-06-05 04:39:06
您是否正在寻找.Net 3.5中引入的BackgroundWorker类?要在后台执行耗时的操作,需要创建一个BackgroundWorker,然后侦听报告操作进度的事件,并在操作完成时发出信号。它在一个单独的线程上执行。
MSDN site提供了一些示例,它们可能会帮助您确定这是否适合您。
或者你可以只使用web服务或者,不是吗?您可以在web服务器上承载web服务,也可以将其作为Windows服务承载。
发布于 2011-06-05 05:13:26
您可以在应用程序启动时启动进程,并在静态变量中保留对它的引用。您还需要附加到OutputDataReceived事件,以便记录进程发送到其StandardOutput流的任何数据。
这个想法是,进程将在服务器上运行,web应用程序将静默地记录它发送的任何信息。当请求到来时,缓冲区将被发送给用户并被清除。
用户还可以发送命令,web应用程序将通过其StandardInput流将这些命令转发给进程。
我还没试过,但它可能行得通。您还需要考虑如果应用程序池回收会发生什么情况。为了获得最好的效果,我认为你应该禁用自动回收。
发布于 2011-06-05 05:25:23
是的,这是最好的方式,使windows服务将控制和监视进程,并成为windows服务构建ASP.NET (webforms)应用程序的应用程序接口。
ASP.NET应用程序可以自动刷新页面(通过javascript或meta刷新标记),并从控制您的进程和事件的windows服务中获得新的状态,更好地,您可以使用ajax构建javascript应用程序并获得新的状态数据和发送命令,因此将不需要刷新整个页面。
https://stackoverflow.com/questions/6239214
复制相似问题