我有两个两个线程运行并执行相同的方法。我如何区分哪一个是我目前的?如何识别我在哪个线程?
例如: 我有方法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");
}
我想检测:如果第一个线程必须保存到sheet1
在excel文件,第二个线程保持到sheet2
在Excel文件。
问题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());
另外:我不知道,如果使用的线程中运行并行。
您可以添加示例代码吗?谢谢。 – vanloc
类似这样的:'public void GetTable(string sheetToStore) { browser = new Lapsoft_OneDriver(Browsers.Chrome,0); browser.GoToUrl(link); DataTable dt; ExcelSave(dt,sheetToStore); }' 另外,在你正在调用这个函数的代码中,如果可能的话,我会推荐使用'Tasks'来代替。这是更好,更清洁使用 –
我更新了我的问题(问题2)。你能看到更多吗? – vanloc