在winform中。直接上代码! private void btnAddIdx_Click(object sender, EventArgs e)
{
//CreateIndex();
Thread thread = new Thread(new ThreadStart(CreateIndex));
thread.IsBackground = true;
thread.Start();
}
private void CreateIndex()
{
SqlDataReader myred = GetSource();
try
{
while (myred.Read())
{
//里面是对读出的数据进行处理
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
报错为:
索引超出范围。必须为非负值并小于集合大小。
参数名: index而且是在处理了一部分数据之后出现的,每次处理的条数都不一样。
直接调用CreateIndex() 不会出错,但是界面会卡死。使用线程就会出现这个错误!
高手们麻烦解释一下。谢谢!
{
//CreateIndex();
Thread thread = new Thread(new ThreadStart(CreateIndex));
thread.IsBackground = true;
thread.Start();
}
private void CreateIndex()
{
SqlDataReader myred = GetSource();
try
{
while (myred.Read())
{
//里面是对读出的数据进行处理
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
报错为:
索引超出范围。必须为非负值并小于集合大小。
参数名: index而且是在处理了一部分数据之后出现的,每次处理的条数都不一样。
直接调用CreateIndex() 不会出错,但是界面会卡死。使用线程就会出现这个错误!
高手们麻烦解释一下。谢谢!
{
//CreateIndex();
Thread thread = new Thread(new ThreadStart(CreateIndex));
thread.IsBackground = true;
thread.Start();
}
private void CreateIndex()
{
SqlDataReader myred = GetSource();
try
{
while (myred.Read())
{
//里面是对读出的数据进行处理
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//将里面的数据写到文本中。
//使用方法
WriteFile("path",myred["Content"].ToString());
但不知道
while (myred.Read())
{
//里面是对读出的数据进行处理
}
里边到底是什么代码?有没有用到全局变量?
http://www.cnblogs.com/warensoft/archive/2010/03/19/1689806.html建议还是先看看吧
和写文件的地方这俩部分代码不贴出来是看不出来的,全局资源要lock一下。
/// <summary>
/// 获取数据源
/// </summary>
/// <returns></returns>
private SqlDataReader GetSource()
{
SqlConnection con = new SqlConnection("server=.;database=TestDB;uid=sa;pwd=123");
con.Open();
SqlCommand cmd = new SqlCommand(string.Format("select {0} from Testtbl", txtShowStr.Text), con);
return cmd.ExecuteReader();
}
private void CreateIndex()
{
SqlDataReader myred = GetSource();
try
{
while (myred.Read())
{
WriteFile("path",myred["Content"].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} //WriteFile其实就是使用File.AppendAllText;当然myred["Content"]是作了一下字符串替换和组合,不是一个字段,而是读出来的数据字段。
debug报错是停在Application.Run(new MainFrm());这句。
报错为:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
所以我无法找到,是不是资源被提前释放了。不得而知!