protected void ThreadFunction(Int32 test) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " starting."); String comment = ""; String cleancomment = ""; String[] OneGrams; List <String> NGrams = new List <String>(); Int32 Length; Int32 NumCaps = 0; Decimal PercentCaps = 0; Int32 NGram = 3; try { using (var conn = new SqlConnection("Data Source=PHD-SERVER;Initial Catalog=CyberbullyDB;Integrated Security=False;User ID=sa;Password="******"GetComment", conn) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@CommentID", test)); conn.Open(); using (SqlDataReader rdr = command.ExecuteReader()) { while (rdr.Read()) { comment = rdr["Comment"].ToString(); cleancomment = rdr["CleanedComment"].ToString(); } } } } catch (Exception e) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " GetComment Failed with: " + e.ToString()); UnlockProcess(test); ThreadCounter--; waiter.Set(); Thread.CurrentThread.Abort(); } OneGrams = cleancomment.Split('|'); for (Int32 i = 1; i <= NGram; i++) { for (Int32 n = 1; n < OneGrams.Length - i - 1; n++) { String adder = OneGrams[n]; for (Int32 count = i - 1; count >= 1; count--) { adder += "|" + OneGrams[n + i - count]; } NGrams.Add(adder); } } try { using (var conn = new SqlConnection("Data Source=PHD-SERVER;Initial Catalog=CyberbullyDB;Integrated Security=False;User ID=sa;Password="******"ClearNGramPercent", conn) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@CommentID", test)); conn.Open(); Int32 rdr = command.ExecuteNonQuery(); } } catch (Exception e) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " ClearNGramPercent Failed with: " + e.ToString()); UnlockProcess(test); ThreadCounter--; waiter.Set(); Thread.CurrentThread.Abort(); } foreach (String Gram in NGrams) { if (Gram == "") { continue; } try { using (var conn = new SqlConnection("Data Source=PHD-SERVER;Initial Catalog=CyberbullyDB;Integrated Security=False;User ID=sa;Password="******"InsertNGram", conn) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@NGram", Gram)); conn.Open(); Int32 rdr = command.ExecuteNonQuery(); } } catch (Exception e) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " InsertNGram Failed with: " + e.ToString()); UnlockProcess(test); ThreadCounter--; waiter.Set(); Thread.CurrentThread.Abort(); } Decimal commentLength = cleancomment.Length; Decimal commentNoGramLength = cleancomment.Replace("|" + Gram + "|", "|").Length; Decimal gramLength = Gram.Length + 1; Decimal Contain = (commentLength - commentNoGramLength) / gramLength; Decimal commentWords = cleancomment.Replace("|", "").Length; Decimal gramWords = Gram.Replace("|", "").Length; Decimal Percent = Contain / ((commentLength - commentWords - 1) / (gramLength - gramWords)); try { using (var conn = new SqlConnection("Data Source=PHD-SERVER;Initial Catalog=CyberbullyDB;Integrated Security=False;User ID=sa;Password="******"InsertNGramPercent", conn) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@CommentID", test)); command.Parameters.Add(new SqlParameter("@NGram", Gram)); command.Parameters.Add(new SqlParameter("@Pct", Percent)); conn.Open(); Int32 rdr = command.ExecuteNonQuery(); } } catch (Exception e) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " InsertNGramPercent Failed with: " + e.ToString()); UnlockProcess(test); ThreadCounter--; waiter.Set(); Thread.CurrentThread.Abort(); } } Length = comment.Length; foreach (Char i in comment) { if (Char.IsUpper(i)) { NumCaps++; } } PercentCaps = (Decimal)NumCaps / (Decimal)Length; try { using (var conn = new SqlConnection("Data Source=PHD-SERVER;Initial Catalog=CyberbullyDB;Integrated Security=False;User ID=sa;Password="******"UpdateStats", conn) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@CommentID", test)); command.Parameters.Add(new SqlParameter("@PercentCaps", PercentCaps)); conn.Open(); Int32 rdr = command.ExecuteNonQuery(); } } catch (Exception e) { eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " UpdateStats Failed with: " + e.ToString()); UnlockProcess(test); ThreadCounter--; waiter.Set(); Thread.CurrentThread.Abort(); } ThreadCounter--; waiter.Set(); eventLog1.WriteEntry("Thread " + Thread.CurrentThread.Name + " completed."); }