private void Simulate(Reco3Msg msg, DatabaseContext dbx) { try { // Helper.ToConsole("=> Reco3Simulator.Simulate"); // if (dbx.Vehicle == null) // Helper.ToConsole(">> Reco3Simulator.Simulate: dbx.vehicle=null"); string strVehicleXML = dbx.Vehicle.SingleOrDefault(mytable => mytable.VehicleId == msg.VehicleId).XML; if (strVehicleXML.Length > 0) { // Helper.ToConsole(">> Creating XML-reader..."); long startTick = DateTime.Now.Ticks; // Helper.ToConsole(string.Format("Start Sim: {0}", msg.VehicleId)); using (XmlReader xmlReader = XmlReader.Create(new StringReader(strVehicleXML))) { // Helper.ToConsole(">> Feeding Vecto,...."); VSumEntry entry = Simulate(xmlReader); entry.SetSimulationId(msg.SimulationJobId, DateTime.Now, msg.VehicleId); UpdateSimulationEntry(msg, ref dbx, true); dbx.SaveChanges(); ResultList.Add(entry); //dbx.VSum.AddRange(entry.Records); //dbx.SaveChanges(); } long endTick = DateTime.Now.Ticks; long elapsedTicks = endTick - startTick; TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); Helper.ToConsole(string.Format("Sim-time: {0} ({1:N2}seconds)", msg.VehicleId, elapsedSpan.TotalSeconds)); // Helper.ToConsole(">> Forcing garbage-collection!"); GC.Collect(); } } catch (Exception e) { Helper.ToConsole(string.Format("!! Reco3Simulator.Simulate: {0}", e.Message)); } }
private VSumEntry Simulate(XmlReader xmlReader) { try { Helper.ToConsole(">> inner Simulate"); var run = VectoApi.VectoInstance(xmlReader); SimJob job2 = new SimJob(run); run.WaitFinished = false; run.RunSimulation(); while (!run.IsFinished) { Thread.Sleep(100); } Helper.ToConsole(">> inner Simulate, done"); bool bAnyAbortedCycle = job2.ContainsAbortedCycles(); if (bAnyAbortedCycle == true) { } string strVSum = job2.CreateVSumBlob(DateTime.Now.ToUniversalTime() .ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'")); VSumEntry entry = new VSumEntry(); entry.ApiVersion = VectoApi.GetVectoCoreVersion(); entry.LoadString(strVSum); Helper.ToConsole(">> inner Simulate, inner done"); return(entry); } catch (Exception e) { Helper.ToConsole(string.Format("!! Reco3Simulator.Simulate, inner: {0}", e.Message)); } return(null); }
private void SimulateXMLFromDisc(string strFilename) { var data = XmlReader.Create(strFilename); VSumEntry entry = Simulate(data); }