Why does the following code gives me only one row with text "3" after 5 seconds?
        var data = new Dictionary<string, Foo>();
        data.Add("foo", new Foo { bar = "1" });
        Invoke((MethodInvoker)delegate()
        {
            listBox.DataSource = new BindingSource(data, null);
            listBox.DisplayMember = "Value";
            listBox.ValueMember = "Key";
        });
        Thread.Sleep(5000);
        data["foo"].bar = "3";
        data.Add("bar", new Foo { bar = "2" });
        Invoke((MethodInvoker)delegate()
        {
            listBox.DisplayMember = "";
            listBox.DisplayMember = "Value";
        });
How can I display all elements and their changes correctly?
None of the suggested solutions from here helped me.