我正在尝试运行该线程,以便在查询的基础上同时从网络中获取结果。下面是我的线程调用代码
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;
}
但是我收到索引超出范围异常的错误。
如果我在不使用此类线程的情况下运行相同的代码
threadResult[i] = onListen(s[i], toquery);
它有效。请帮我跟踪错误。
答案 0 :(得分:-1)
试试这个:
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();
}