【发布时间】:2015-10-06 15:53:10
【问题描述】:
我有一个简单的 C# 控制台应用程序,我将使用它来轮询三个 URL,以更新由第三方生成的网站(库存水平、产品图像等)。控制台应用如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Diagnostics.Process.Start(@"http://URL1");
System.Diagnostics.Process.Start(@"http://URL2");
System.Diagnostics.Process.Start(@"http://URL3");
}
}
}
这可以完美运行,但会使窗口保持打开状态(单个浏览器实例中的三个选项卡)。由于这将每隔一小时左右运行一次,有没有办法让应用程序在打开窗口后“杀死”它们?否则系统内存将被 Internet Explorer 会话缓慢消耗。
我找不到关于从控制台应用程序关闭浏览器的任何其他内容,但如果我错了,请指出正确的方向。
没有其他东西会使用浏览器,所以它不需要检查浏览器是否被控制台打开,它只需要关闭应用程序。它将作为远程服务器上的计划任务运行。谢谢。
解决方案
最简单的方法是按照建议更改为HttpWebRequest。结果代码如下:
static void Main(string[] args)
{
HttpWebRequest myReq1 = (HttpWebRequest)WebRequest.Create("http://URL1");
HttpWebRequest myReq2 = (HttpWebRequest)WebRequest.Create("http://URL2");
HttpWebRequest myReq3 = (HttpWebRequest)WebRequest.Create("http://URL3");
}
【问题讨论】:
-
是否可以有
Console.Readine(),然后在后面加上Process.Kill()? -
如果您对实际的浏览器实例不感兴趣,并且它只是用于向 url 发出请求,请考虑使用
HttpWebRequest或WebClient发出 Http 请求 -
@Jamiec 这听起来像是一个更好的主意 - 我会调查一下!谢谢