c# 线程间操作无效 从不是创建控件“listView1”的线程访问它

图片说明

    private void button2_Click(object sender, EventArgs e)
    {

        Lrcload ld = new Lrcload();
        ld.code = Encoding.Default;
        if (dcgb2312.Checked) ld.code = System.Text.Encoding.GetEncoding("gb2312");
        if (dcutf8.Checked) ld.code = System.Text.Encoding.GetEncoding("utf-8");
        ld.listview = listView1.Items;
        ld.reload = checkBox3.Checked;

        //ld.load();

        Thread t = new Thread(new ThreadStart(ld.load));
        t.IsBackground = true;
        t.Start();
    }
    class Lrcload
    {
        /// <summary>
        /// 保存文件编码
        /// </summary>
        public System.Text.Encoding code;
        /// <summary>
        /// 列表listview.Items
        /// </summary>
      //  public ListViewItem[] listview;
        public ListView.ListViewItemCollection listview;
        /// <summary>
        /// 已有歌词重下
        /// </summary>
        public bool reload;

        /// <summary>
        /// 下载歌词
        /// </summary>
        public void load()
        {
            bu(false);
            foreach (ListViewItem lvi in listview)
            {
                try
                {

1个回答

public void load()
{
某个控件.Invoke(delegate() {
你原来的代码
});
}

jiangshunmin
jiangshunmin 你说是的用委托,这个我知道, 但我上面的代码并不是要去操作控件啊,而是通过传递参数,在后台线程读取参数而已。
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐