private string Print() { var print = new StringBuilder(); var hamsters = HDCon.Hamsters.OrderBy(x => x.CageID); //hämtar ut alla hamstrar och sorterar dom efter vilken bur dom är i //lägger till column name print.Append($"{"CID",-7}{"EID",-10}{"Name",-15}\t{"Age",-10}\t{"Sex",-10}\t\t{"Owner",-30} \t\t{"CheckedIn",-40}\t{"Exersiced",-40}" + Environment.NewLine + Environment.NewLine); foreach (var h in hamsters) //loopar igenom alla hamstrar { string female = "Female"; //defualt värde string cageID = h.CageID.ToString(); string ExID = h.ExerciseAreaID.ToString();; if (!h.IsFemale) //kollar om det är en hane { female = "Male"; } if (h.CageID == null) //om den inte är i en bur { cageID = ""; } if (h.ExerciseAreaID == null) //om den inte är och tränar { ExID = ""; } //lägger till införmation om hamstern print.Append($"{cageID,-10}{ExID,-10}{h.Name,-15}\t{h.Age,-10}\t{female,-20}\t{h.Ownername,-25} \t\t{h.CheckedInTime,-40}\t{h.LastExercise,-40}" + Environment.NewLine); } PrintEvent?.Invoke(this, new PrintEventArgs(print.ToString(), Date)); //invokar ett event som skriver ut vad som hänt detta tick return(print.ToString()); //retunerar stringbuildern som en string }
public void Print() { for (int i = 0; i < _numLastItem; i++) { Console.WriteLine($"{i}.{_strings[i].TimeInputed} - {_strings[i].TextInputed}"); if (PrintEvent != null) { PrintEvent.Invoke(_strings[i], DateTime.Now); } } }
private async void StartThreads(object sender, TickEventArgs e) //async metod som anropas på varje tick { if (e.Date.TimeOfDay == TimeSpan.Parse("17:00:00")) //kollar om kl är 17, då är dagen över { e.IsPaused = true; //simuleringen pausas Date = e.Date; //date sätts till datumet simuleringen är på var checkOutTask = CheckOutHamstersForTheDay(); //skapar en task som skickar hem hamstrarna för dagen await checkOutTask; //awaitar tasken PrintEvent?.Invoke(this, new PrintEventArgs(Print(), e.Date)); //invokar ett event som skriver ut vad som hänt detta tick ReportEvent?.Invoke(this, new ReportEventArgs(HDCon.Hamsters.ToList(), HDCon.ActivityLogs.ToList())); //invokar ett event som genererar och skriver ut rapport för dagen var logs = HDCon.ActivityLogs; HDCon.ActivityLogs.RemoveRange(logs); //tömmer logs i databasen HDCon.SaveChanges(); //sparar ändringar e.Date = e.Date.AddHours(13.9); //lägger till 13.9h på simuleringen för att starta en ny dag e.IsPaused = false; //startar simuleringen igen } else if (e.Date.Hour >= 7 & e.Date.TimeOfDay <= TimeSpan.Parse("17:00:00")) //om kl är mellan 07.00 och 17.00 { Date = e.Date; //date sätts till datumet simuleringen är på if (e.Date.TimeOfDay == TimeSpan.Parse("07:00:00")) //om kl är 07.00 { var addToCageTask = AddHamstersToCages(); //skapar en task för att checka in hamstrarna för dagen, behöver endast göras en gång per dag await addToCageTask; //awaitar tasken } var retrieveFromExerciseTask = RetreiveHamstersFromExtersiceArea(); //skapar en task som plockar ut hamstrar från träningsområdet var addToExerciseTask = AddHamstersToExerciseArea(); //skapar en task som lägger till hamstrar till träningsområdet await retrieveFromExerciseTask; //awaitar tasken await addToExerciseTask; //awaitar tasken PrintEvent?.Invoke(this, new PrintEventArgs(Print(), e.Date)); //invokar ett event som skriver ut vad som hänt detta tick } }
static void OnPrintEvent(object sender, PrintEventArgs e) => PrintEvent?.Invoke(sender, e);
public virtual void OnPrintEvent() { PrintEvent?.Invoke(); }
public void FireEvent() { PrintEvent?.Invoke(); }