如何从我的控制台应用程序打开多个http链接?

时间:2018-07-20 07:09:03

标签: c# asp.net-mvc-4 cron

我创建了一个控制台应用程序,在该应用程序中我想在特定时间触发多个链接。搜索后,我做了如下操作:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;

namespace cronjob_Test_App
{
    class Program
    {
         static void Main(string[] args)
        {
            StartProcess();
        }
        public static void StartProcess()
        {
            // Process.Start("https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe");

            var psi = new ProcessStartInfo("chrome.exe");
            string a, b;
            a = "https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe";
            b = "https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe";
            psi.Arguments = a;
            Process.Start(psi);
            psi.Arguments = b;
            Process.Start(psi);
 }

    }
}

它同时启动所有链接。我希望第一个链接完成,然后启动第二个链接。我该怎么办?或者如果有其他好的方法,请提出建议。 我正在使用Windows Scheduler与此控制台应用程序一起在特定时间启动控制台应用程序。

2 个答案:

答案 0 :(得分:1)

您可以尝试一下。使用use Process.Start并将url设置为第二个参数。

string a = "https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe";
string b = "https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe";
Process.Start("chrome.exe", a);
Process.Start("chrome.exe", b);

答案 1 :(得分:1)

使用 Process.WaitForExit() Method

var psi = new ProcessStartInfo("chrome.exe");
string a, b;
a = "http://www.google.com/";
b = "http://www.bing.com/";
psi.Arguments = a;
var p1=  Process.Start(psi);
p1.WaitForExit();
psi.Arguments = b;
var p2 = Process.Start(psi);
p2.WaitForExit();
Console.ReadLine();

此外,您还可以向方法添加时间延迟,该方法以(int)毫秒为参数。

示例:p1.WaitForExit(500)

PS:该过程不会等待整个网页加载。

已编辑

如果您要下载文件,请使用WebClient

using (WebClient client = new WebClient())
{              
    Task taskA = Task.Factory.StartNew(() => client.DownloadFile("https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe",
                                    @"F:\Installer.exe"));
    taskA.Wait();
    Console.WriteLine("Task A has completed.");
    Task taskB = Task.Factory.StartNew(() => client.DownloadFile("https://notepad-plus-plus.org/repository/7.x/7.5.7/npp.7.5.7.Installer.exe",
                                    @"F:\Installer.exe"));
    taskA.Wait();
    Console.WriteLine("Task B has completed.");

}