2016-04-06 4 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

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); 
    } 
} 
Task又は Task<>を返す)非同期メソッドでブロッキング .Result又は .Wait()方法を使用しない、corrent非同期/パターンを待つを使用
関連する問題