private async Task GenerateRenderer(GenerateRendererParameters rendererParam)
        {
            GenerateRendererResult result = await generateRendererTask.GenerateRendererAsync(rendererParam);

            LayerDrawingOptions          layerDrawingOptions = null;
            LayerDrawingOptionCollection options             = null;

            // If this is the first execution of this sample create a new LayerDrawingOptionsCollection
            if (((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions == null)
            {
                options = new LayerDrawingOptionCollection();

                // Add a new LayerDrawingOptions for layer ID 2 using the generated renderer
                options.Add(new LayerDrawingOptions()
                {
                    LayerID = 2, Renderer = result.Renderer
                });
            }
            else
            {
                // Otherwise the layer will have an existing LayerDrawingOptionsCollection from a previous button click
                options = ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions;

                // Iterate over the LayerDrawingOptionsCollection.
                // For layer ID 2 get the existing LayerDrawingOptions object and apply the newly generated renderer
                foreach (LayerDrawingOptions drawOption in options)
                {
                    if (drawOption.LayerID == 2)
                    {
                        layerDrawingOptions = drawOption;
                        drawOption.Renderer = result.Renderer;
                    }
                }
            }

            // Retrieve the GenerateRendererParameters Where clause and create a new LayerDefinition for layer ID 2
            if (!string.IsNullOrEmpty(rendererParam.Where))
            {
                LayerDefinition layerDefinition = new LayerDefinition()
                {
                    LayerID    = 2,
                    Definition = rendererParam.Where
                };

                ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDefinitions =
                    new ObservableCollection <LayerDefinition>()
                {
                    layerDefinition
                };
            }

            // Apply the updated LayerDrawingOptionsCollection to the LayerDrawingOptions property on the layer
            ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions = options;
        }
        void generateRendererTask_ExecuteCompleted(object sender, GenerateRendererResultEventArgs e)
        {
            GenerateRendererResult rendererResult = e.GenerateRendererResult;

            LayerDrawingOptionsCollection options = (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions != null
                ? (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions : new LayerDrawingOptionsCollection();

            LayerDrawingOptions layerDrawingOptionsParcels = null;

            foreach (LayerDrawingOptions drawOption in options)
            {
                if (drawOption.LayerID == 2)
                {
                    layerDrawingOptionsParcels = drawOption;
                    drawOption.Renderer        = rendererResult.Renderer;
                }
            }

            if (e.UserState != null)
            {
                LayerDefinition layerDefinition = new LayerDefinition()
                {
                    LayerID    = 2,
                    Definition = e.UserState as string
                };

                (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions =
                    new System.Collections.ObjectModel.ObservableCollection <LayerDefinition>()
                {
                    layerDefinition
                };
            }
            else
            {
                (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions = null;
            }


            if (layerDrawingOptionsParcels == null)
            {
                options.Add(new LayerDrawingOptions()
                {
                    LayerID = 2, Renderer = rendererResult.Renderer
                });
            }

            (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions = options;
            (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).Refresh();
        }