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 に答える