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

时间:2016-07-07 18:08:09

标签: c# multithreading

我希望每个帖子都运行不同的网址。

我写这样的代码:

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是DataTable包含所有链接。

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用对象[]将参数传递给线程。

例如

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 });