Demo this.listView1.Visible = true; this.listView1.BeginUpdate();this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制 using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; namespace 子线程操作主线程窗体上的控件 { public part…
在C#中,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能 简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作. 要实现该功能,基本思路如下: 把想对另一线程中的控件实施的操作放到一个函数中,然后使用delegate代理那个函数,并且在那个函数中加入一个判断,用 InvokeRequired 来判断调用这个函数的线程是否和控件线程处…
C#用副线程去试图修改主线程的UI控件会报出异常,解决方案是使用副线程注册事件通知主线程自己去修改UI控件 在winform中,方法如下 private void button1_Click(object sender, EventArgs e) { Thread myThread = new Thread (new ThreadStart(fun)); myThread.Start(); } private void fun() { textBox1.BeginInvoke(new Actio…
Android中,主线程中的组件,不能被子线程调用,否则就会出现异常. 这里所使用的方法就是利用Handler类中的Callback(),接受线程中的Message类发来的消息,然后把所要在线程中执行的功能交由Handler类来处理.这样就解决了线程出现的问题. 下面测试实例功能为单击图片,图片透明度改变为50,300毫秒后恢复不透明,代码如下: public class Demo extends Activity{ private ImageView changeImg = null;//Im…
在网上收集到了TextView 的属性,在开发过程中还是挺有用的. android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正.此处无效果,在显示输入法并输入的时候起作用. android:bufferType 指定getText()方式取得的文本类别.选项editable 类似于StringBuil…
由于项目的需要,最近几天一直在做串口和数据库.由于C#使用的时间不长,所以在编写代码和调试的过程中总是遇到意想不到的问题,比如在使用串口接收数据的时候,在接收数据事件中想把接收的数据放入一个textbox作显示,但是明明非常简单的代码,在编译的时候总是提示有错误.后来查看网上资料,才知道C#还有委托,匿名等等之类的新东西.下面我就把我这几天的经验和大家分享一下.这次就主要说说委托和匿名方法,以后在说说串口使用方面的经验. 先说一下委托的基本概念,委托是一种引用型的数据类型,其实它的概念和C语言的…
这是一个线程不安全的问题.跨线程操作问题. 比如我们需要在线程中改变textbox的文本,textbox的name是txtShowMsg 第一种方法(不推荐使用) 在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false; 这种方法,只是不去检查跨线程的安全性. 第二种方法(推荐使用) 第一步:定义一个委托 /// <summary> /// 委托改变 Text的值 /// </summary> /// <param na…
如果出现以下错误:调用线程无法访问此对象,因为另一个线程拥有该对象. 你就碰到多线程访问UI线程.主线程的控件的问题了. 先占位.…
通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带Looper的,当线程要接收来自主线程的消息是就需要调用Looper.prepare()和Looper.loop().以下我们将通过一个示例,讲述主线程和线程之间如何发送Message. 01 import android.app.Activity; 02 import android.os.Bund…
近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽通信的方式,但是并不完全适合线程间的信号槽通信,这主要体现在自定义消息的传递上. 首先我们看看一般的方式:利用信号-槽发送Qt内置的元数据类型testthread.h 文件 #ifndef TESTTHREAD_H #define TESTTHREAD_H #include <QThread> #…