在循环中调用函数时,Invoke required不为真
本文关键字:required Invoke 循环 调用 函数 | 更新日期: 2023-09-27 18:16:47
我有一个奇怪的问题。我有以下代码在我的函数:
if (this.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
LoadGamesAndRefreshView();
});
return;
}
presenter.LoadGames();
presenter.ApplyFilter();
呈现器方法present . applyfilter()调用View来更新UI元素。
发布的代码(函数)是在WCF上调用的,所以从不同的线程,所以我必须调用这个。这工作得很好,但我有时必须在循环中调用这个函数,所以在WCF上大约有15-20次调用这个函数。当我这样做的时候,我的客户端崩溃了,因为它在错误的线程中,不能改变UI元素。
服务器为每个函数创建自己的线程
这应该可以解决您的问题。
您必须检查演示者是否需要调用。
void LoadGamesAndRefreshView()
{
if (presenter.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)Delegate
{
LoadGamesAndRefreshView();
});
return;
}
presenter.LoadGames();
presenter.ApplyFilter();
}