C# 奥尔良市内部谷物的使用效果

C# 奥尔良市内部谷物的使用效果,c#,orleans,C#,Orleans,我试图了解奥尔良的谷物是如何运作的。当我尝试在外部晶粒中使用内部晶粒的结果时,我的程序将暂停 内在的纹理是否会被我的外在纹理的上下文所阻挡,所以我永远无法从内在的纹理中得到结果 public class OuterGrain : Grain, IOuterGrain { public Task<string> GetFormattedTime() { var innerGrain = GrainFactory.GetGrain<IInnerGra

我试图了解奥尔良的谷物是如何运作的。当我尝试在外部晶粒中使用内部晶粒的结果时,我的程序将暂停

内在的纹理是否会被我的外在纹理的上下文所阻挡,所以我永远无法从内在的纹理中得到结果

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);
    }
}
public类OuterGrain:Grain,IOuterGrain
{
公共任务GetFormattedTime()
{
var innerGrain=GrainFactory.GetGrain(1);
var innerGrainTask=innerGrain.GetCurrentTime();
返回Task.FromResult(innerGrainTask.Result.ToString(“yy-MM-dd”);
}
}
公共类谷物:谷物,谷物
{
公共任务GetCurrentTime()
{
返回Task.FromResult(DateTime.Now);
}
}

使用相应的异步/等待模式,切勿在异步方法中使用阻塞
.Result
.Wait()
方法(返回
任务
任务

public类OuterGrain:Grain,IOuterGrain
{
公共异步任务GetFormattedTime()
{
var innerGrain=GrainFactory.GetGrain(1);
var innerGrainResult=等待innerGrain.GetCurrentTime();
返回innerGrainResult.ToString(“年-月-日”);
}
}
公共类谷物:谷物,谷物
{
公共任务GetCurrentTime()
{
返回Task.FromResult(DateTime.Now);
}
}
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);
    }
}