【问题标题】:Changing textbox content from inside the ThreadPool C#从 ThreadPool C# 内部更改文本框内容
【发布时间】:2011-11-05 16:53:50
【问题描述】:

我正在使用线程池进行一些测试,如何更改表单中的 Textbox.text?

        ThreadPool.SetMaxThreads(3, 3);

        for(int i2 = 0; i2 < 100; i2++)
        {
            ThreadPool.QueueUserWorkItem(myInt, i2);
        }
        void myInt(object obj23)
    {
        int value = (int)obj23;
        writeTo(value);
       // code to write textbox1.text += value + "\n";
        Thread.Sleep(10000);

    }

错误是因为没有创建对象(textbox1)的线程正在尝试更改它

【问题讨论】:

  • 搜索 InvokeRequired -- 你会发现一堆提示
  • 该错误看起来像 WPF 错误,而不是 winforms 错误。这是 WPF 吗?
  • 鉴于控件只能从创建它们的线程更新,此代码有 0.0% 的意义。追求它没有意义。

标签: c# multithreading


【解决方案1】:

为您创建一个简单的示例...

    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 100; i++)
        {
            System.Threading.ThreadPool.QueueUserWorkItem(k => {

                textBox2.Invoke(new Action(() => {
                    textBox2.AppendText("k:" + k + "\r\n");
                }));

            } , i);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多