当前位置:编程学习 > C#/ASP.NET >>

线程间的通讯问题

程序如下:

 private void button1_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(methodRun));
            newThread.Start(); 

        }

        public void methodRun()
        {           
           
            if (comboBox1.Text == "1")
            {
                label1.Text = "你选择的是1";
            }
            else { }
        }

运行时,提示“线程间操作无效,从不是创建控件comboBox1的线程访问它”,
 
请问这是怎么回事啊?正确的写法应该是怎么样的?

我是新手,请大家帮帮忙! --------------------编程问答--------------------

        delegate void UpdateLabel1Callback();
        private void button1_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(methodRun));
            newThread.Start();
        }

        public void methodRun()
        {
            if (this.InvokeRequired)
            {
                UpdateLabel1Callback d = new UpdateLabel1Callback(UpdateLabel1);
                this.Invoke(d);
            }
            else
            {
                UpdateLabel1;
            }
        }
        private void UpdateLabel1()
        {
            if (comboBox1.Text == "1")
            {
                label1.Text = "你选择的是1";
            }
            else { }
        }
--------------------编程问答-------------------- .net 2.0开始,控件只能由其创建的线程访问(通常即主线程或称UI线程)。 --------------------编程问答-------------------- 必须使用代理
--------------------编程问答-------------------- 如何获得当前程序的线程总数? --------------------编程问答--------------------

System.Diagnostics.Process.GetCurrentProcess().Threads.Count
--------------------编程问答-------------------- 能不能说详细点,我的意思是当前程序的线程总数如何获得,谢谢! --------------------编程问答-------------------- System.Diagnostics.Process.GetCurrentProcess().Threads.Count
这就是当前程序的线程总数,你试了没~~ --------------------编程问答--------------------

   int threadcnt=System.Diagnostics.Process.GetCurrentProcess().Threads.Count ;
   MessageBox.Show(threadcnt.ToString());
--------------------编程问答-------------------- --------------------编程问答-------------------- 不会吧,我新建了一个程序,只添加了一个button,结果显示有12个纯程呢!
这是怎么回事啊,?
我的程序如下:

 private void button1_Click(object sender, EventArgs e)
        {
            int threadcnt = System.Diagnostics.Process.GetCurrentProcess().Threads.Count;
            MessageBox.Show(threadcnt.ToString());

        } --------------------编程问答-------------------- 不会吧,我新建了一个程序,只添加了一个button,结果显示有12个纯程呢! 

不是应该只有一个线程的吗?

这是怎么回事啊,? 
我的程序如下: 

 private void button1_Click(object sender, EventArgs e) 
        { 
            int threadcnt = System.Diagnostics.Process.GetCurrentProcess().Threads.Count; 
            MessageBox.Show(threadcnt.ToString()); 

        } --------------------编程问答-------------------- 显示12个线程很正常。
并不是你不另外开启线程就没有其他的线程,.net每个Application都有一个ThreadPool(线程池),.net内部许多的操作都会使用线程,应用程序加载之后就会线程池中就会创建一些线程来等待调用。
例如异步操作,当你调用某个Begin*****的方法时,就会通过ThreadPool来执行,虽然你没有显示开启线程。 --------------------编程问答-------------------- http://topic.csdn.net/u/20080331/16/498a9ef4-4631-4f4a-a6fc-16b72e17313a.html
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,