我创建了一个控制台应用程序,在该应用程序中我想在特定时间触发多个链接。搜索后,我做了如下操作:
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与此控制台应用程序一起在特定时间启动控制台应用程序。
答案 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.");
}