gpt4 book ai didi

.net-core - 当前线程与 Dispatcher 没有关联。触发渲染时使用 InvokeAsync() 将执行切换到 Dispatcher

转载 作者:行者123 更新时间:2023-12-04 04:07:16 24 4
gpt4 key购买 nike

我正在使用 Dotnet Core Blazor 并在删除事件后使用 EventCallBack 绑定(bind)父网格时遇到错误。下面是使用子组件的代码

<tbody>
@foreach (var employee in Employees)
{
<BlazorAppDemo.Pages.Controls.EmployeeList Employee="employee"
ShowFooter="ShowFooter"
OnEmployeeSelectionChange="onEmployeeSelectionChanged"
btnDeleteClick="OnEmployeeDeleted" >

</BlazorAppDemo.Pages.Controls.EmployeeList>
}
</tbody>

EmployeeList 子组件如下
<tr>
@*<td>@Employee.EmployeeId</td>*@
<td><input type="checkbox" @onchange="CheckBoxChanged" /></td>
<td>@Employee.Department.DepartmentName</td>
<td>@Employee.FirstName</td>
<td>@Employee.DateOfBirth.ToShortDateString()</td>
<td><img class="card-img-top img-thumb" style="width:50px;height:50px" src="@Employee.PhotoPath" /></td>
@if (ShowFooter)
{
<AuthorizeView Roles="Admin" Policy="OldEmployeeBefore2020">
<Authorized>
<td>
<a href="@($"employeedetails/{Employee.EmployeeId}")" class="btn btn-primary m-1">View</a>
<a href="@($"employeeEdit/{Employee.EmployeeId}")" class="btn btn-primary m-1">Edit</a>
@*<a href="#" class="btn btn-danger m-1">Delete</a>*@
<button class="btn btn-danger m-1" @onclick="btnDelete_Click">
</button>
</td>
</Authorized>
</AuthorizeView>
}

删除按钮事件:
 [Parameter]
public EventCallback<int> btnDeleteClick { get; set; }

protected async Task btnDelete_Click()
{
var response = await EmployeeService.Delete(Employee.EmployeeId).ConfigureAwait(false);

if (string.IsNullOrEmpty(response.ErrorMessage))
{
await btnDeleteClick.InvokeAsync(Employee.EmployeeId);
//NavigationManager.NavigateTo("employee");
}
}

父页面已订阅删除事件:
 protected async Task OnEmployeeDeleted(int id)
{
var response = await EmployeeService.GetEmployees().ConfigureAwait(false);
if (response.Result != null)
{
Employees = response.Result.Result;
}
else
{
PageMessage = response.ErrorMessage;
}
}

最佳答案

您应该删除 .ConfigureAwait(false) (据我所知是 2 倍)。

当您在 Blazor 中正确使用 async/await 时,您几乎不需要它。

当您使用它时,您要求事件的其余部分在不同的线程上运行。大多数情况下是错误的线程。

关于.net-core - 当前线程与 Dispatcher 没有关联。触发渲染时使用 InvokeAsync() 将执行切换到 Dispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62289074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com