public VirtualMachineResult <T> Start <T>(string nazwaMetody, params object[] parametet) { Thread = new ThreadOfControl() { WirtualnaMaszyna = this }; start(nazwaMetody, parametet); if (Thread.Status == VirtualMachineState.Hibernated) { return(new VirtualMachineResult <T>() { State = Thread.Status }); } T ret; if (typeof(T) == typeof(bool)) { dynamic r = Thread.Result; ret = Convert.ToBoolean(r); } else { ret = (T)Thread.Result; } var result = new VirtualMachineResult <T>() { State = Thread.Status, Result = ret }; return(result); }
public VirtualMachineResult <T> Resume <T>(object hibernateResumeParameter = null) { Thread.AktualnaMetoda.PushObject(hibernateResumeParameter); Thread.AktualnaMetoda.NumerWykonywanejInstrukcji++; Thread.Status = VirtualMachineState.Executing; Thread.AktualnaMetoda.CzyWykonywacInstrukcje = true; Thread.Execute(); if (Thread.Status == VirtualMachineState.Hibernated) { return(new VirtualMachineResult <T>() { State = Thread.Status }); } var ret = (T)Thread.Result; var result = new VirtualMachineResult <T>() { State = Thread.Status, Result = ret }; return(result); }