在触发渲染或组件状态时使用 InvokeAsync() 将执行切换到 Dispatcher

Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state

我在 Blazor Server 中有一个子组件,它显示 table。单击 table 中的一行,我有以下处理程序方法和事件回调将数据发送到父组件(它将子组件包装在需要在新数据通过时切换的弹出窗口中) .

object get/set 来自 DevExpress,我似乎无法在不抛出错误的情况下使该方法异步,但事件回调需要异步。

[Parameter]
public EventCallback<DataObj> OnDataObjSelection { get; set; }
DataObj _selectedDataObject { get; set; }

object SelectedDataObject
    {
        get
        {
            return _selectedDataObject;
        }
        set
        {
            _selectedDataObject = value as DataObj;
            new Task(async () =>
            {
                await OnDataObjSelection.InvokeAsync(_selectedDataObject);
            }).Start();
        }
    }

在父组件中,我在事件回调中触发了这个函数(如果子组件可见,它将隐藏包装子组件的弹出窗口):

 async void DataObjSelectionChanged(DataObj dataObj)
        {
            _currentDataObj = dataObj;
    
            if (_showPopup)
            {
                await InvokeAsync(() =>
                {
                    _showPopup = false;
                    StateHasChanged();
                });
            }
        }

然而,我收到以下错误:Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state Blazor Server

有人知道如何解决这个问题吗?我以为我的语法是正确的,但显然不是。

正如上面提到的,你把它复杂化了。

[Parameter]
public EventCallback<DataObj> OnDataObjSelection { get; set; }
DataObj _selectedDataObject { get; set; }

object SelectedDataObject
    {
        get =>  _selectedDataObject;
        set
        {
            _selectedDataObject = value as DataObj;
            OnDataObjSelection.InvokeAsync(_selectedDataObject);
        }
    }

并且:

private void DataObjSelectionChanged(DataObj dataObj)
{
    _currentDataObj = dataObj;
    if (_showPopup)
         StateHasChanged();
}