0
在下面的方法中,我将数据从excel文件导入到列表中。每次txnhdr.SessionNo更改时,我都希望SessionNo更改。这是在IF语句中处理的。虽然在oledbdatareader上循环需要睡眠,所以它不会超前自己
该方法有时会起作用,但在其他时候,IF内部没有被击中,Session也不会改变,除非我放置Thread.Sleep,然后每次都有效。
我看不到我缺少任何东西。
public static void LoadDataFromFile(string testXLDataFile, string sheetName)
{
string path = Directory.GetCurrentDirectory() + @"\TestData\" + testXLDataFile;
var connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';";
var queryString = "select * from [" + sheetName + "]";
using (OleDbConnection connection = new OleDbConnection(connStr))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
OleDbDataReader txnReader = command.ExecuteReader();
int? SessionNo = -1;
int currSessionNo = -2;
while (txnReader.Read())
{
var txnhdr = new TxnHeader(txnReader["HostIP"].ToString().Trim(), int.Parse(txnReader["SessionNo"].ToString().Trim()), txnReader["CustID"].ToString().Trim(), txnReader["GroupID"].ToString().Trim(), txnReader["ProfID"].ToString().Trim());
if (currSessionNo != txnhdr.SessionNo)
{
currSessionNo = txnhdr.SessionNo;
SessionNo = new Random().Next(999999, 999999999);
}
//the rest of the code does not reassign any of the above variables
//but if I don't put a Thread.Sleep(100) here, then SessionNo will
//not be reassigned a new random number starting at random rows.
}//while
}//using
} //method
只有当SessionNumber发生变化时才会调用Random,这就是我想要的。如果会话编号对于5行是相同的,那么Random将被第一次调用,而不是再次调用,直到它再次发生变化。 – user167908 2014-08-28 18:53:45
你仍然需要在循环外部创建'Random'。根据需要调用“下一个”。 – 2014-08-28 19:00:24
好的,谢谢!当我回到我的开发机器时,我会尝试。不过,我不明白我使用Random的方式会如何导致这种事情。它在IF中。如果你喜欢它,解释器可能派上用场。 – user167908 2014-08-28 20:19:15