以下所有代碼僅用於創建兩個進程。雖然我需要創建n個進程來打開Chrome瀏覽器,並根據dtUser.Rows.Count
運行OpenNRowsInData(user, pwd)
,因爲這是動態的。如何在C#中的DataTable.Rows.Count中創建n個對象庫?
而且我不知道爲什麼OpenNRowsInData(user, pwd);
總是隻能得到第一排。
我有一個DataTable
範圍從1-7行。
通常,我通常使用創建兩個對象。
static myObject[] browser = new myObject[] {
new myObject(Browsers.Chrome, 0),
new myObject(Browsers.Chrome, 0)
};
Thread t1, t2;
t1 = new Thread(new ThreadStart(AllCase))
{
Name = "Thread1"
};
t1.Start();
t2 = new Thread(new ThreadStart(AllCase))
{
Name = "Thread2"
};
t2.Start();
在AllCase
類:
static int[] stepRun = { 0, 0 };
private void AllCase()
{
int idx = int.Parse(Thread.CurrentThread.Name.Replace("Thread", "")) - 1;
switch (stepRun[idx])
{
case 0:
foreach (DataRow row in dtUser.Rows)
{
user = row["user"].ToString();
pwd = row["pwd"].ToString();
OpenNRowsInData(user, pwd);
}
break;
case 1:
ClickBuy();
break;
}
}
並且在另一使用並行處理之前予。目前,我不想使用它。
Parallel.ForEach(
dtUser.AsEnumerable(),
items => OpenNRowsInData(items["user"].ToString(), items["pwd"].ToString()));
我想只列user
和pwd
。
用代碼試過,我試圖在action()
方法中添加一個參數,如:action(string user, string pwd)
。
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null) throw new ArgumentNullException("source");
if (action == null) throw new ArgumentNullException("action");
foreach (T item in source)
{
action(item);
}
}
更新時間:
添加OpenNRowsInData(string username, string password)
類:
private void OpenNRowsInData(string username, string password)
{
int idx = int.Parse(Thread.CurrentThread.Name.Replace("Thread", "")) - 1;
try
{
browser[idx].DeleteAllCookies();
browser[idx].GoToUrl(link);
browser[idx].waittingID("txtUserName", 15);
browser[idx].FindElementById("txtUserName").SendKeys(username);
browser[idx].FindElementById("txtpassword").SendKeys(password);
browser[idx].FindElementById("btnlogin").Click();
stepRun[idx] = 1;
AllCase();
}
}
您可以發佈'OpenNRowsInData()'的實現嗎? –
你的問題是爲什麼'OpenNRowsInData(user,pwd);'總是隻得到第一行..?=!只是爲了澄清:在'dtUser.Rows'中你有7行,所以有7個用戶,你想登錄他們每個人。當你在'AllCase'中通過foreach循環時,它是否產生了正確的'user'和'pwd'值? –
在第一次迭代後退出循環嗎?還是它給你7次同一行? –