此代码提供异常:System.ArgumentOutOfRangeException
ArrayList conarr = new ArrayList();
conarr.Add("User ID=sysdba;Password=wrongpass1;" +
"Database=C:\\prod\\file.fdb;DataSource=192.168.0.5;Charset=NONE; Connection Timeout=30;Pooling=false;");
conarr.Add("User ID=sysdba;Password=wrongpass2;" +
"Database=C:\\prod\\file.fdb;DataSource=192.168.0.5;Charset=NONE; Connection Timeout=30;Pooling=false;");
conarr.Add("User ID=sysdba;Password=GOODPASS;" +
"Database=C:\\prod\\file.fdb;DataSource=192.168.0.5;Charset=NONE; Connection Timeout=30;Pooling=false;");
for (int t = 0; t < conarr.Count; t++)
{
Thread tr = new Thread(delegate()
{
trycon(conarr[t].ToString()); //<---------
});
tr.Start();
}
但如果我将此线程创建更改为:
for (int t = 0; t < conarr.Count; t++)
{
string cs = conarr[t].ToString(); //<------
Thread tr = new Thread(delegate ()
{
trycon(cs); //<-------
});
tr.Start();
}
比它工作正常。 为什么? (此代码用于在单独的并行线程中搜索哪个与数据库的连接良好以及哪个连接错误)