public IndexedHashtable disconnect() { int lth = cxnTable.Count; QueryThread[] queries = new QueryThread[lth]; Thread[] threads = new Thread[lth]; for (int i = 0; i < lth; i++) { queries[i] = new QueryThread(cxnTable.GetValue(i), "disconnect", new Object[0]); threads[i] = new Thread(new ThreadStart(queries[i].execute)); threads[i].Start(); } IndexedHashtable result = new IndexedHashtable(lth); for (int i = 0; i < lth; i++) { string key = (string)cxnTable.GetKey(i); threads[i].Join(); if (queries[i].isExceptionResult()) { result.Add(key, queries[i].Result); } else { result.Add(key, "OK"); } } cxnTable.Clear(); return(result); }