QueuedTask.Run(..) hangs when I use Wait() method
public void SetFeatureLayerSymbolAsync(ArcGIS.Desktop.Mapping.FeatureLayer ftrLayer, CIMSymbol symbolToApply)
{
if (ftrLayer == null || symbolToApply == null)
throw new System.ArgumentNullException();
CIMSimpleRenderer currentRenderer = QueuedTask.Run(()=> ftrLayer.GetRenderer() as CIMSimpleRenderer).Result;
if (currentRenderer == null)
return;
symbolToApply.SetRealWorldUnits(ftrLayer.UsesRealWorldSymbolSizes);
currentRenderer.Symbol = symbolToApply.MakeSymbolReference();
QueuedTask.Run(()=> ftrLayer.SetRenderer(currentRenderer)).Wait();
}
And If I use await, it doesn't go to the next line(line 18), returns to the caller method(line 3) and QueuedTask still remains busy(line 4)
public void SetCustomPictureSymbol(ArcGIS.Desktop.Mapping.FeatureLayer featureLayer)
{
SetFeatureLayerSymbolAsync(featureLayer, _symbol.Symbol);
if (QueuedTask.Busy)
Task.Delay(1000);
}
public async Task SetFeatureLayerSymbolAsync(ArcGIS.Desktop.Mapping.FeatureLayer ftrLayer, CIMSymbol symbolToApply)
{
if (ftrLayer == null || symbolToApply == null)
throw new System.ArgumentNullException();
CIMSimpleRenderer currentRenderer = QueuedTask.Run(()=> ftrLayer.GetRenderer() as CIMSimpleRenderer).Result;
if (currentRenderer == null)
return;
symbolToApply.SetRealWorldUnits(ftrLayer.UsesRealWorldSymbolSizes);
currentRenderer.Symbol = symbolToApply.MakeSymbolReference();
await QueuedTask.Run(()=> ftrLayer.SetRenderer(currentRenderer));
if (QueuedTask.Busy)
{
Task.Delay(1000);
}
}