我有兩個兩個線程運行並執行相同的方法。我如何區分哪一個是我目前的?如何識別我在哪個線程?
例如: 我有方法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