[英]Using result from inner grain in Orleans
我试图了解谷物在奥尔良的工作方式。 当我尝试使用外部Grain中的内部Grain的结果时,程序将停顿。
内层纹理是否会被外层纹理的上下文所阻挡,所以我永远无法从内层纹理得到结果?
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);
}
}
使用当前的异步/等待模式,切勿在异步方法(返回Task
或Task<>
)中使用阻塞的.Result
或.Wait()
方法。
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.