From 14121da0dc3e5889cd16ce5280d54ace3d253701 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 26 Feb 2019 22:44:53 -0800 Subject: [PATCH] Revise GeneratorItem to use async tasks - Issue MatterHackers/MCCentral#5099 Plan to resolve problems with async usage --- .../Library/Providers/GeneratorItem.cs | 14 ++++---- .../MatterControl/PrimitivesContainer.cs | 33 +++++++++---------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/MatterControlLib/Library/Providers/GeneratorItem.cs b/MatterControlLib/Library/Providers/GeneratorItem.cs index a845b20ca..d5fa5c3e2 100644 --- a/MatterControlLib/Library/Providers/GeneratorItem.cs +++ b/MatterControlLib/Library/Providers/GeneratorItem.cs @@ -74,7 +74,7 @@ namespace MatterHackers.MatterControl.Library /// /// The delegate responsible for producing the item /// - private Func collector; + private Func> collector; public GeneratorItem(Func nameResolver) { @@ -82,7 +82,7 @@ namespace MatterHackers.MatterControl.Library this.IsProtected = true; } - public GeneratorItem(Func nameResolver, Func collector, string category = null) + public GeneratorItem(Func nameResolver, Func> collector, string category = null) { this.nameResolver = nameResolver; this.collector = collector; @@ -114,17 +114,17 @@ namespace MatterHackers.MatterControl.Library public bool LocalContentExists => true; - public Task GetObject3D(Action reportProgress) + public async Task GetObject3D(Action reportProgress) { - var result = collector?.Invoke(); + var object3D = await collector?.Invoke(); // If the content has not set a color, we'll assign from the running ColorRange - if (result.Color == Color.Transparent) + if (object3D.Color == Color.Transparent) { - result.Color = this.Color; + object3D.Color = this.Color; } - return Task.FromResult(result); + return object3D; } } } \ No newline at end of file diff --git a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs index 848cf8ea4..41c8e3bc5 100644 --- a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs +++ b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs @@ -1,5 +1,5 @@ /* -Copyright (c) 2017, John Lewin +Copyright (c) 2019, John Lewin All rights reserved. Redistribution and use in source and binary forms, with or without @@ -30,12 +30,11 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Collections.Generic; using System.IO; +using System.Threading.Tasks; using MatterHackers.Agg.Platform; using MatterHackers.DataConverters3D; using MatterHackers.Localizations; using MatterHackers.MatterControl.DesignTools; -using MatterHackers.MatterControl.DesignTools.Operations; -using MatterHackers.MatterControl.Plugins.BrailleBuilder; namespace MatterHackers.MatterControl.Library { @@ -55,57 +54,57 @@ namespace MatterHackers.MatterControl.Library { new GeneratorItem( () => "Cube".Localize(), - () => CubeObject3D.Create()) + () => Task.FromResult(CubeObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Pyramid".Localize(), - () => PyramidObject3D.Create()) + () => Task.FromResult(PyramidObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Wedge".Localize(), - () => WedgeObject3D.Create()) + () => Task.FromResult(WedgeObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Half Wedge".Localize(), - () => HalfWedgeObject3D.Create()) + () => Task.FromResult(HalfWedgeObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Text".Localize(), - () => TextObject3D.Create().Result) + async () => await TextObject3D.Create()) { DateCreated = new System.DateTime(index++) }, #if DEBUG new GeneratorItem( () => "Text".Localize(), - () => TextPathObject3D.Create()) + () => Task.FromResult(TextPathObject3D.Create())) { DateCreated = new System.DateTime(index++) }, #endif new GeneratorItem( () => "Cylinder".Localize(), - () => CylinderObject3D.Create()) + () => Task.FromResult(CylinderObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Cone".Localize(), - () => ConeObject3D.Create().Result) + async () => await ConeObject3D.Create()) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Half Cylinder".Localize(), - () => HalfCylinderObject3D.Create()) + () => Task.FromResult(HalfCylinderObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Torus".Localize(), - () => TorusObject3D.Create()) + () => Task.FromResult(TorusObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Ring".Localize(), - () => RingObject3D.Create()) + () => Task.FromResult(RingObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Sphere".Localize(), - () => SphereObject3D.Create()) + () => Task.FromResult(SphereObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Half Sphere".Localize(), - () => HalfSphereObject3D.Create()) + () => Task.FromResult(HalfSphereObject3D.Create())) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Image Converter".Localize(), @@ -129,7 +128,7 @@ namespace MatterHackers.MatterControl.Library var constructedComponent = tempScene.SelectedItem; tempScene.Children.Remove(constructedComponent); - return constructedComponent; + return Task.FromResult(constructedComponent); }) { DateCreated = new System.DateTime(index++) }, };