从蓝牙接收字符串后使用线程更新标签
大家好我有一个线程,可以读取从蓝牙流接收的数据。 在发件人部分,我做了一个while循环,其中count继续增加+ 1.我做了一个messagebox.show(test); 它工作正常,但是当我做一个label.text =测试我得到:
“Control.Invoke必须用于与在单独的线程上创建的控件进行交互。” 错误。 我在C#中的跟随代码:
线程t =新线程(new ThreadStart(readStream)); t.Start(); public void readStream(){while(true){String test = manager.Reader.ReadLine(); label1.Text = test; }}
我的问题是,我如何更新线程中的标签? 任何调用控件的简单方法?
你好,这里是一个例子,如何做到这一点:
http://msdn.microsoft.com/en-us/library/ms171728.aspx
如果你想从另一个线程更新一个标签,你应该使用一个类似于这个函数的函数。 你不能直接更新它。
总之:你应该写这样的东西:
delegate void SetTextCallback(string text); private void SetText(string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { this.textBox1.Text = text; } }链接地址: http://www.djcxy.com/p/57925.html
上一篇: Using of threads to update labels after receiving string from bluetooth