C#线程用法及跨线程访问

我们在做窗体应用程序的时候,有时候穾获取当前窗体的信息,或者调用其他窗体的控件。

这里我介绍两种方法来实现。


当我们需要在窗体中调用其他窗体的控件时,我们可以用控件.CheckForIllegaCrossThreadCalls=false;

例如:Button.CheckForIllegalCrossThreadCalls=false;

当然我们也可以让整个窗体可以跨线程访问

Form.CheckForIllegalCrossThreadCalls=false;

这样我们就可以在其他窗体中访问这个窗体的控件或者属性。

这样也许不是最安全的方法,有的时候调试会给我们报错。


这里我再介绍一种可以跨线程访问的方法。

Invoke   跳到窗体线程上去执行委托上的函数


首先我们需要声明一个委托,

public delegate void DelSetTime(object str);

然后我们只需要准备好需要执行的函数,

public void setTime(object str);

下面我们就可以将委托放到窗体的线程上去执行

Delegate d=new DelsetTime(setTime);

this.Invoke(d,Datetime.Now.ToString());

这样我们就可以实现跨线程访问了。


每一个窗体都有一个窗体线程,这个线程主要是完成窗体的绘制,及窗体控件

上的事件代码的处理,这个线程我们称它为窗体线程或者主线程。

很多时候我们需要为窗体添加线程来处理数据,这时我们就可以这些新创建的线程设置为后台线程,当窗体关闭时,这些后台

线程也会跟着结束。

ThreadStart ths=new ThreadStart(Demo);

Thread th= new Thread(ths);

th.Start();

th.IsBackground=true;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值