当前位置:  开发笔记 > 编程语言 > 正文

C#我可以使用backgroundwork线程将值添加到列表框中吗?

如何解决《C#我可以使用backgroundwork线程将值添加到列表框中吗?》经验,为你挑选了2个好方法。

我希望我的后台工作者将项目添加到列表框中,它在调试时似乎这样做,但列表框不显示值.我怀疑这与在后台工作线程中添加项目有关,我是否需要将这些添加到数组中,然后在数组中填充列表框backgroundWorker1_RunWorkerCompleted

谢谢您的帮助.



1> Gonzalo Quer..:

您可以像这样使用Invoke:

private void AddToListBox(object oo)
{
    Invoke(new MethodInvoker(
                   delegate { listBox.Items.Add(oo); }
                   ));
}



2> Oliver Fried..:

您可以,但是您必须建议您的Backgroundworker报告状态,并将具有当前状态的框的输入发送到该事件.在该事件的方法中,您可以访问该框并将新值放入.

否则,您需要手动调用.

 public Form1()
        {
            InitializeComponent();

            BackgroundWorker bw = new BackgroundWorker();
            bw.WorkerReportsProgress = true;
            bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
            bw.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw.RunWorkerAsync();
        }

        void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                ((BackgroundWorker)sender).ReportProgress(0, i.ToString());
            }
        }

        void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            listBox1.Items.Add((string)e.UserState);
        }

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有