我试图了解谷物在奥尔良的工作方式。当我尝试使用外部 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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用相应的 async/await 模式,切勿在异步方法(返回或)中使用阻塞.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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |