Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框不';t显示在单独线程中添加的项目_C#_Multithreading_Lambda - Fatal编程技术网

C# 组合框不';t显示在单独线程中添加的项目

C# 组合框不';t显示在单独线程中添加的项目,c#,multithreading,lambda,C#,Multithreading,Lambda,我正在将项目(字符串)加载到一个单独线程中的组合框中。加载完成后,组合框似乎为空。但是,如果我开始在其中键入现有项目的名称,然后按下向下或向上箭头,它会自动完成我的项目,突然我在组合中看到我的所有项目。我做错了什么? 注意:myItem只是一个使用名为Name的公共属性创建的类,getItems返回这些项的数组 void cmb_GotFocus(object sender, System.EventArgs e) { if (cmb.Items.Count ==

我正在将项目(字符串)加载到一个单独线程中的组合框中。加载完成后,组合框似乎为空。但是,如果我开始在其中键入现有项目的名称,然后按下向下或向上箭头,它会自动完成我的项目,突然我在组合中看到我的所有项目。我做错了什么? 注意:myItem只是一个使用名为Name的公共属性创建的类,getItems返回这些项的数组

    void cmb_GotFocus(object sender, System.EventArgs e)
    {
        if (cmb.Items.Count == 0)
        {
            Thread thread = new Thread(new ThreadStart(GetItems));
            thread.Start();
        }
    }

    private void GetItems()
    {
        try
        {
            this.Invoke(new Action(() => cmb.Items.Clear()));

            myItem[] items = Library.GetItems();
            if (items != null && items.Length > 0)
            {
                foreach (myItem item in items)
                {
                    this.Invoke(new Action(() => cmb.Items.Add(item.name)));
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Could not get items.\nError: " + ex.Message);
        }
    }

你可以在你的虚拟机中有一个ObservableCollection,并将combobox项资源绑定到它。然后将新项目添加到observablecollection?谢谢Johan,我会尝试的。如果我能找到一个让代码保持原样的解决方案,我会更喜欢它——对我来说似乎更直观。可能是UI实例和线程实例是两个不同的实例。所以你看不到数据。你的代码为meThanushka工作-你所说的“不同实例”是什么意思?代码位于同一类和程序集中。我不是在跟踪你。。。Mehmet-我正在使用VS2010和.NET4.0客户端配置文件。你在用什么?