我有一个奇怪的问题。我的函数中有以下代码:
if (this.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
LoadGamesAndRefreshView();
});
return;
}
presenter.LoadGames();
presenter.ApplyFilter();
演示者方法presenter.ApplyFilter()调用视图来更新UI元素。
发布的代码(函数)是通过WCF调用的,所以从另一个线程调用,所以我必须调用它。这工作正常,但我必须在循环中调用此函数,因此在WCF上会有大约15-20次调用此函数。当我这样做时,我的客户端崩溃,因为它在错误的线程中,并且无法更改UI元素。
对于每个Function,服务器都会创建自己的线程。
答案 0 :(得分:0)
这应该可以解决您的问题。
您必须检查演示者是否需要调用。
void LoadGamesAndRefreshView()
{
if (presenter.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)Delegate
{
LoadGamesAndRefreshView();
});
return;
}
presenter.LoadGames();
presenter.ApplyFilter();
}