1

我想通过 Dispatcher.BeginInvoke 向 ComboBox 添加一个列表。但是当我试图把它放在一个循环中时,只有最后一个值正在加载。

    private void LoadToComboBox(List<string> msg)
    {
        for (int i = 0; i < msg.Count; i++)
        {
           this.Dispatcher.BeginInvoke(() => cmbListItems.Items.Add(msg[i]));
        }
    }
4

1 回答 1

2

Dispatcher.BeginInvoke() 是一个异步调用。发生的事情是,当您调用 cmbListItems.Items.Add()函数时,它已经设置为msg.Count.

尝试这样的事情:

private void LoadToComboBox(List<string> msg)
        {

            this.Dispatcher.BeginInvoke(() => 
            {
                for (int i = 0; i < msg.Count; i++) {
                    cmbListItems.Items.Add(msg[i]);
                }
            });

        } 
于 2012-09-24T17:08:19.457 回答