2016-04-06 30 views
2

我想了解穀物如何在奧爾良的工作。當我嘗試使用外穀物中的內穀物的結果時,我的程序會失速。在奧爾良使用內穀物的結果

內部紋理是否會被我的外部紋理所阻擋,所以我永遠無法得到內部紋理的結果?

public class OuterGrain : Grain, IOuterGrain 
{ 
    public Task<string> GetFormattedTime() 
    { 
     var innerGrain = GrainFactory.GetGrain<IInnerGrain>(1); 
     var innerGrainTask = innerGrain.GetCurrentTime(); 
     return Task.FromResult(innerGrainTask.Result.ToString("yy-MM-dd")); 
    } 
} 

public class InnerGrain : Grain, IInnerGrain 
{ 
    public Task<DateTime> GetCurrentTime() 
    { 
     return Task.FromResult(DateTime.Now); 
    } 
} 

回答

2

使用corrent異步/等待模式,從不使用在異步方法阻擋.Result.Wait()方法(即返回TaskTask<>

public class OuterGrain : Grain, IOuterGrain 
{ 
    public async Task<string> GetFormattedTime() 
    { 
     var innerGrain = GrainFactory.GetGrain<IInnerGrain>(1); 
     var innerGrainResult = await innerGrain.GetCurrentTime(); 
     return innerGrainResult.ToString("yy-MM-dd"); 
    } 
} 

public class InnerGrain : Grain, IInnerGrain 
{ 
    public Task<DateTime> GetCurrentTime() 
    { 
     return Task.FromResult(DateTime.Now); 
    } 
}