无法再读取ParameterView实例,因为它已过期.ParameterView只能同步读取,不能为存储



当重写SetParametersAsync时,如果我调用任何异步方法,那么我会得到"未处理的异常呈现组件:无法再读取ParameterView实例,因为它已过期。ParameterView只能同步读取,不得存储以备以后使用">

public override async Task SetParametersAsync(ParameterView parameters)
{
await Task.Delay(1000);
await base.SetParametersAsync(parameters);
}

如何在SetParamatersAsync中安全地调用异步方法?

我相信您正在寻找的编码模式如下所示。错误消息由呈现器生成。它正在传递ParameterView,跟踪它,并期望它立即(同步(被消耗。对象中的参数可能会在一秒钟内变得非常陈旧。

在该模式中,我们立即使用parameters,并将其应用于组件实例属性。然后,我们可以在空闲时调用base,传递一个空的ParameterView,因为我们已经设置了它们。

public async override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
await Task.Delay(100);
await base.SetParametersAsync(ParameterView.Empty);
}
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
... Do things
return base.SetParametersAsync(ParameterView.Empty);
}

这是ASPNetCore团队似乎使用的模式。您可以在InputBase的代码中看到它—从第190行开始。

相关内容

  • 没有找到相关文章

最新更新