在循环中调用函数时,Invoke required不成立

时间:2014-08-06 05:49:38

标签: c# invoke

我有一个奇怪的问题。我的函数中有以下代码:

if (this.InvokeRequired)
{
    this.BeginInvoke((MethodInvoker)delegate
    {
        LoadGamesAndRefreshView();
    });

    return;
}

presenter.LoadGames();
presenter.ApplyFilter();

演示者方法presenter.ApplyFilter()调用视图来更新UI元素。

发布的代码(函数)是通过WCF调用的,所以从另一个线程调用,所以我必须调用它。这工作正常,但我必须在循环中调用此函数,因此在WCF上会有大约15-20次调用此函数。当我这样做时,我的客户端崩溃,因为它在错误的线程中,并且无法更改UI元素。

对于每个Function,服务器都会创建自己的线程。

1 个答案:

答案 0 :(得分:0)

这应该可以解决您的问题。
您必须检查演示者是否需要调用。

    void LoadGamesAndRefreshView()
    {
        if (presenter.InvokeRequired)
        {
            this.BeginInvoke((MethodInvoker)Delegate
            {
                LoadGamesAndRefreshView();
            });
            return;
        }
        presenter.LoadGames();
        presenter.ApplyFilter();
    }