在 C# 中运行两个具有两个线程名称的 URL

本文关键字:两个 URL 线程 运行 | 更新日期: 2023-09-27 17:55:40

我希望每个线程运行一个不同的 Url。

我写这样的代码:

static void Main()
{
    var t1 = new Thread(new ThreadStart(RegisterLink))
    {
        Name = "Thread1"
    };
    t1.Start();
    var t2 = new Thread(new ThreadStart(RegisterLink))
    {
        Name = "Thread2"
    };
    t2.Start();
    t1.Join();
    t2.Join();
}
static bool start_Link()
{
    int idx = int.Parse(Thread.CurrentThread.Name.Replace("Thread", "")) - 1;
    try
    {
        foreach (DataRow dtRow in dtLink.Rows)
        {
            link[idx] = dtRow["get_link"].ToString();
            browser_array[idx].DeleteAllCookies();
            browser_array[idx].GoToUrl(link[idx]);
        }
    }
}
static void RegisterLink()
{
    int idx = int.Parse(Thread.CurrentThread.Name.Replace("Thread", "")) - 1;
    try
    {
        switch (stepRun[idx])
        {
            case 0:
                start_new();
                break;
            case 1:
                compare();
                break;
        }
    }
    catch
    {
        ExitALL();
        return;
    }
}

dtLink是数据表包含所有链接。

示例:我有两个链接 { 0: google.com, 1: reddit.com }。它只有打开的链接 1 是 reddit.com。

使用 Thread 时,我很难尝试调试。

在 C# 中运行两个具有两个线程名称的 URL

您可以使用 object[] 将参数传递到线程中。

例如。

static bool start_link(object data)
{
     object [] arguments = data as object[];
     int idx = (int) arguments[0];
}

Thread t1 = new Thread(start_link) { Name = "Thread 1"};
t1.Start(new object[]{ 0 });