我有两个线程正在运行并执行相同的方法。我如何区分哪一个是我目前的那个?
实施例:
我有方法GetTable()
将返回新的DataTable dt有数据。
public void GetTable()
{
browser = new Lapsoft_OneDriver(Browsers.Chrome, 0);
browser.GoToUrl(link);
DataTable dt;
if(thread == 1)
ExcelSave(dt, "sheet1");
else if(thread == 2)
ExcelSave(dt, "sheet2");
}
我想检测:如果第一个线程必须保存到excel文件中的sheet1
,第二个线程将保留在excel文件中的sheet2
。
问题2:
首先,它会在第二个帖子中创建两个browser
和browser.GoToUrl(link)
仅工作(两次)。
这意味着:Thread 1
和Thread 2
创建了两个进程Chrome浏览器。但是何时只能在browser.GoToUrl(link)
中使用行Thread 2
。 Thread 2
执行代码browser.GoToUrl(link)
两次。
我的代码如下:
Thread tid1 = new Thread(new ThreadStart(GetTable));
Thread tid2 = new Thread(new ThreadStart(GetTable));
tid1.Start();
tid2.Start();
我正在使用:
Parallel.Invoke(() => GetTable(), () => GetTable());
另外:我不知道是否使用Thread并行运行。
答案 0 :(得分:3)
Azodious和Hari的建议会起作用,但我认为更好的设计方法,如果可能改变,将在执行2个线程的代码中传递工作表作为参数写入。
答案 1 :(得分:2)
您可以命名Thread.Name
并将其用于识别。
if(Thread.CurrentThread.Name == "Thread1")
{
// logic
}
else
{
// else logic
}
答案 2 :(得分:1)
我想检测一下,如果第一个线程必须保存到excel文件中的sheet1,第二个线程会保留到excel文件中的sheet2。
创建线程时为线程指定名称。并在GetTable
方法中检查该名称。
我不知道是否使用Thread并行运行。
在多核上,是的。