//the inserting of every runner that happens on an asynchronous thread public static Task ProcessRunners(string[] FirstName, string[] LastName, DateTime[] DOB, char[] Genders, string[] BibID, string[] Team, string[] Orginization, string RaceName, string Connection, IProgress <ProgressReport> progress) { BuildIfNotExsistDB(); int raceID = GetRaceID(RaceName); int index = 1; //big assumption that all arrays are same size or atleast larger than the FirstName array int totalProcess = FirstName.Length; var progessReport = new ProgressReport(); return(Task.Run(() => { using (var conn = new SQLiteConnection(Connection)) { conn.Open(); using (var cmd = new SQLiteCommand()) { for (int i = 0; i < totalProcess; i++) { cmd.Connection = conn; cmd.CommandText = "Insert Into Runners(FirstName, LastName, DOB, Gender) Values(@FirstName, @LastName, @DOB, @Sex);"; cmd.Parameters.AddWithValue("@FirstName", FirstName[i]); cmd.Parameters.AddWithValue("@LastName", LastName[i]); cmd.Parameters.AddWithValue("@DOB", DOB[i].ToString("yyyy-MM-dd")); cmd.Parameters.AddWithValue("@Sex", Genders[i]); cmd.ExecuteNonQuery(); cmd.CommandText = "Insert into RaceRunner(RunnerID, RaceID, BibID, Orginization, Team) Values(" + "(select RunnerID from Runners where FirstName=@FirstName AND LastName=@LastName Limit 1)," + "@Race," + "@BibID,@Orginization,@Team);"; cmd.Parameters.AddWithValue("@Race", raceID); cmd.Parameters.AddWithValue("@BibID", BibID[i]); cmd.Parameters.AddWithValue("@Team", Team[i]); cmd.Parameters.AddWithValue("@Orginization", Orginization[i]); cmd.ExecuteNonQuery(); progessReport.PercentComplete = index++ *100 / totalProcess; progress.Report(progessReport); } } conn.Close(); TobyTimer.BackupAfter60Seconds(); } })); }
//the inserting of every runner that happens on an asynchronous thread public static Task ProcessRunners(string[] FirstName, string[] LastName, DateTime[] DOB, char[] Genders, string[] BibID, string[] Team, string[] Orginization, string RaceName, string Connection, IProgress<ProgressReport> progress) { BuildIfNotExsistDB(); int raceID = GetRaceID(RaceName); int index = 1; //big assumption that all arrays are same size or atleast larger than the FirstName array int totalProcess = FirstName.Length; var progessReport = new ProgressReport(); return Task.Run(() => { using (var conn = new SQLiteConnection(Connection)) { conn.Open(); using (var cmd = new SQLiteCommand()) { for (int i = 0; i < totalProcess; i++) { cmd.Connection = conn; cmd.CommandText = "Insert Into Runners(FirstName, LastName, DOB, Gender) Values(@FirstName, @LastName, @DOB, @Sex);"; cmd.Parameters.AddWithValue("@FirstName", FirstName[i]); cmd.Parameters.AddWithValue("@LastName", LastName[i]); cmd.Parameters.AddWithValue("@DOB", DOB[i].ToString("yyyy-MM-dd")); cmd.Parameters.AddWithValue("@Sex", Genders[i]); cmd.ExecuteNonQuery(); cmd.CommandText = "Insert into RaceRunner(RunnerID, RaceID, BibID, Orginization, Team) Values(" + "(select RunnerID from Runners where FirstName=@FirstName AND LastName=@LastName Limit 1)," + "@Race," + "@BibID,@Orginization,@Team);"; cmd.Parameters.AddWithValue("@Race", raceID); cmd.Parameters.AddWithValue("@BibID", BibID[i]); cmd.Parameters.AddWithValue("@Team", Team[i]); cmd.Parameters.AddWithValue("@Orginization", Orginization[i]); cmd.ExecuteNonQuery(); progessReport.PercentComplete = index++ * 100 / totalProcess; progress.Report(progessReport); } } conn.Close(); TobyTimer.BackupAfter60Seconds(); } }); }