我有两个线程运行和执行相同的方法。我怎样才能分辨出其中哪一个是我目前所处的?
示例:我有方法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());
另外:我不知道是否使用线程并行运行。
发布于 2016-06-27 23:23:59
Azodious和Hari的建议将有效,但我认为一个更好的设计方法,如果可能的话,将是在代码中执行两个线程来传递作为参数写入的工作表。
发布于 2016-06-27 23:22:29
您可以命名Thread.Name
并使用它进行标识。
if(Thread.CurrentThread.Name == "Thread1")
{
// logic
}
else
{
// else logic
}
发布于 2016-06-27 23:20:55
我想检测,如果第一个线程必须保存到sheet1中的excel文件,第二个线程保持到sheet2在excel文件。
在创建线程时为线程分配名称。并在GetTable
方法中检查该名称。
我不知道是否使用线程并行运行。
多核的,是的。
https://stackoverflow.com/questions/38069537
复制相似问题