private void Start() { unique.Clear(); while (this.starts.Count > 0) { Disposer disposer = this.starts.Dequeue(); if (!this.unique.Add(disposer)) { continue; } if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectSystem objectEvent)) { continue; } IStart iStart = objectEvent as IStart; if (iStart == null) { continue; } objectEvent.Set(disposer); iStart.Start(); } }
public void Start() { this.Load(); foreach (Component <World> component in this.GetComponents()) { IUpdate update = component as IUpdate; if (update != null) { this.iUpdates.Add(update); } IStart start = component as IStart; if (start != null) { start.Start(); } } // loop while (!this.isStop) { Thread.Sleep(1); foreach (IUpdate update in this.iUpdates) { update.Update(); } } }
private void Start() { starts = newStarts; newStarts = new List <long>(); foreach (long id in starts) { Object obj; if (!this.objects.TryGetValue(id, out obj)) { continue; } IObjectEvent objectEvent; if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent)) { continue; } IStart iStart = objectEvent as IStart; if (iStart == null) { continue; } objectEvent.SetValue(obj); iStart.Start(); } }
public void Add(Object obj) { if (objectEvents == null) { return; } this.objects.Add(obj.Id, obj); IObjectEvent objectEvent; if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent)) { return; } IStart iStart = objectEvent as IStart; if (iStart != null) { this.newStarts.Add(obj.Id); } IUpdate iUpdate = objectEvent as IUpdate; if (iUpdate != null) { this.newUpdates.Add(obj.Id); } ILoader iLoader = objectEvent as ILoader; if (iLoader != null) { this.loaders.Add(obj.Id); } }
public App(string configPath, IStart starter) { Starter = starter; DataPathParent = configPath.Substring(0, configPath.LastIndexOf(Path.DirectorySeparatorChar)); ConfigPath = configPath; InitializeComponent(); MainPage = new MainPage(); }
private void Start() { while (this.starts.Count > 0) { Disposer disposer = this.starts.Dequeue(); IObjectEvent objectEvent; if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectEvent)) { continue; } IStart iStart = objectEvent as IStart; if (iStart == null) { continue; } objectEvent.Set(disposer); iStart.Start(); } }
public static void ExecuteCodeFromUrl(string Url, Func <byte[], byte[]> intermediateStep = null) { using (var webClient = new WebClient()) { ZipArchive gzStream = new ZipArchive(webClient.OpenRead(Url)); var entries = gzStream.Entries; XmlSerializer serializer = new XmlSerializer(typeof(Config)); Config cfg = (Config)serializer.Deserialize(entries.FirstOrDefault(x => x.Name == "config.xml").Open()); var asms = new List <Assembly>(); foreach (var entry in entries) { if (entry.Name.EndsWith(".dll") || entry.Name.EndsWith(".exe")) { asms.Add(GetAssemblyFromStream(entry.Open(), intermediateStep)); } } var namespaceClass = cfg.classToCall.Split('.'); if (cfg.threading == Threading.SameThread) { IStart callableClass = Get <IStart>(namespaceClass[0], namespaceClass[1], asms.FirstOrDefault(x => x.FullName.Contains(namespaceClass[0])), null); callableClass.EntryPoint(); } else { Thread thread = new Thread(() => { IStart callableClass2 = Get <IStart>(namespaceClass[0], namespaceClass[1], asms.FirstOrDefault(x => x.FullName.Contains(namespaceClass[0])), null); callableClass2.EntryPoint(); }); if (cfg.threading == Threading.NewSTA) { thread.SetApartmentState(ApartmentState.STA); } thread.Start(); } } }