youyiyang 2021-07-29 13:52 采纳率: 74.2%
浏览 42
已结题

这段代码为什么不能运行?子线程访问UI主线程的控件不能执行



```c#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace invoke1
{
    public delegate void MyInvoke(string str);
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        

        private void button9_Click(object sender, EventArgs e)
        {
            //_myInvoke = new MyInvoke(SetText);
            //CheckForIllegalCrossThreadCalls = false;
            Thread t = new Thread(new ThreadStart(fun));
            t.Start();
        }

        private void fun()
        {
            //_myInvoke("dddd");
            SetText("ddd");
        }
        private void SetText(string s)
        {
            if (textBox6.InvokeRequired)
            {
                MyInvoke _myInvoke = new MyInvoke(SetText);
                this.Invoke(_myInvoke, new object[] { s });
            }
            else
            {
                this.textBox6.Text = s;
            }
        }
    }


}

```

  • 写回答

3条回答 默认 最新

  • Aganstrong 2021-07-29 16:08
    关注

    线程内委托执行textBox的修改比较好

    private delegate void dvg(string s);
    
    private void ceshiThread(Object obj)
    {
        textBox1.Invoke(new dvg((s) => {
                textBox1.Text = s;
        }), new object[] { "你需要赋值的字符串" });
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        Thread th = new Thread(ceshiThread);
        th.IsBackground = true;
        th.Start();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 目标计数模型训练过程中的问题
  • ¥100 Acess连接SQL 数据库后 不能用中文筛选
  • ¥15 用友U9Cloud的webapi
  • ¥20 电脑拓展屏桌面被莫名遮挡
  • ¥20 ensp,用局域网解决
  • ¥15 Python语言实验
  • ¥15 我每周要在投影仪优酷上自动连续播放112场电影,我每一周遥控操作一次投影仪,并使得电影永远不重复播放,请问怎样操作好呢?有那么多电影看吗?
  • ¥20 电脑重启停留在grub界面,引导出错需修复
  • ¥15 matlab透明图叠加
  • ¥50 基于stm32l4系列 使用blunrg-ms的ble gatt 创建 hid 服务失败