在c#中使用线程获取记录时出错
本文关键字:获取 记录 出错 线程 | 更新日期: 2023-09-27 18:04:51
我正在尝试运行线程以根据查询同时从网络获取结果。下面是我调用
线程的代码 for(int i=0;i<numberOfConnection;i++)
{
//threadResult[i] = onListen(s[i], toquery);
exec[i] = new Thread(() => threadResult[i] = onListen(s[i], toquery));
exec[i].Start();
}
, onListen
函数为
private string onListen(Socket s,string query)
{
string returnmsg = DateTime.Now.ToString("HH:mm:ss.ffff tt"); //= Start Time ===
try
{
Stream ss = new NetworkStream(s);
StreamReader sr = new StreamReader(ss);
StreamWriter sw = new StreamWriter(ss);
sw.AutoFlush = true;
sw.WriteLine(query);
returnmsg += " " + sr.ReadLine() + " " + DateTime.Now.ToString("HH:mm:ss.ffff tt"); //== End Time ==
s.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return returnmsg;
}
但是我得到index out of range异常的错误。
如果我运行相同的代码而不使用像这样的线程
threadResult[i] = onListen(s[i], toquery);
它的工作原理。
试试这个:
for(int i=0;i<numberOfConnection - 1;i++)
{
//threadResult[i] = onListen(s[i], toquery);
exec[i] = new Thread(() => threadResult[i] = onListen(s[i], toquery));
exec[i].Start();
}
或
for(int i=1;i<numberOfConnection;i++)
{
//threadResult[i] = onListen(s[i], toquery);
exec[i] = new Thread(() => threadResult[i] = onListen(s[i], toquery));
exec[i].Start();
}