代码之家  ›  专栏  ›  技术社区  ›  Svisstack

C.NET 4.0中的数据绑定设置时间慢

  •  2
  • Svisstack  · 技术社区  · 14 年前

    我有个问题。我有动态生成布局的windows窗体应用程序,但性能有问题。我用这个表格 DataBinding .NET 4.0 安装后的数据绑定工作正常,但是 在大约上阻止我的应用程序的控件 0.7秒。 我有一些控制和时间设置是围绕着 2分钟 .

    我尝试所有可能的解决方案,我没有任何想法没有写自我约束类。 为什么我的代码有问题?

    case "Boolean":
    {
        Binding b = new Binding("Checked", __bindingsource, __ep.Name);
        CheckBox cb = new CheckBox();
    
        /*
         * HERE is the start of problem
         */
    
        cb.DataBindings.Add(b);
    
        /*
         * HERE is the end of problem
         */
    
        __flp.Controls.Add(cb);
        __bindingcontrol.AddBinding(b);
        break;
    }
    

    没有问题的代码行都工作得很快而且没有绑定;—(但是我希望绑定以正常速度打开。

    PS1我已在生成时暂停布局。

    PS2。我在绑定textbox和pictureboxe时也有同样的问题,checkbox只是一个例子。

    如何做到这一点,或者更多关于如何调试问题,vs2010剖析器说,只有问题是绑定,我知道这一点。

    1. system.windows.forms.control.controlCollection.add(类system.windows.forms.control)
    2. system.windows.forms.controlBindingsCollection.add(类system.windows.forms.binding)

    编辑: DataContext来自数据库。(实体框架)

    3 回复  |  直到 14 年前
        1
  •  2
  •   Shiraz Bhaiji    14 年前

    不确定这是否是您的情况下的问题,但如果绑定触发“事件风暴”,则可能需要很长时间。也就是说,绑定到控件A,它触发控件B中的更改,从而触发控件A中的更改…

    要检查的一件事是您正在更新的控件上的事件。

    另一件事是,从您的评论来看,您似乎正在表单之间共享绑定源。这可能是问题的根源。你为什么这么做?使用每个表单的绑定源将使您的程序更易于管理。

        2
  •  1
  •   Svisstack    14 年前

    这个动作不快是因为 __bindingsource 有很多元素。 Binding 不能很好地处理大型收藏,这是一个问题。

    _绑定源 是一个 BindingSource 上课。而且必须有更少的元素来快速工作。我通过创建另一个新的 绑定源 每个实例 绑定集 (我的意思是将一次多个元素绑定到一个对象的属性)只有一个元素,这是我想要使用的。

        3
  •  0
  •   Simon    14 年前

    我也有这个问题。我设置了 DataSourceUpdateMode Never (在 Binding -类构造函数):那时的性能要好得多。如果不需要更新数据源,这是正确的方法。

    此性能问题是由激发的验证事件引起的。即使控件失去焦点或被单击,也会触发验证事件,这会大大降低应用程序的性能。

    编辑:虽然我没有绑定到entityframework,但是性能很差。设置 数据源更新模式 从未 减少触发的事件数。一旦你设置了 DataSourceUpdatedMode 从未 ,更新将是单向的:从数据源到控件。