this.Study(DateTime.Now)
专业因为专注(周银辉的开发博客)
博客园
首页
博问
闪存
新随笔
联系
订阅
管理
随笔-292 文章-3 评论-1825
.net3.0 中跨线程访问控件
.net3.0 中跨线程访问控件
周银辉
这两天用WPF做一个项目的UI部分时, 发现跨线程地访问了UI控件, 自然地报异常了. 当时找了半天也没在控件中找到InvokeRequired属性和Invoke方法, 郁闷之极.....最后发现在.net3.0中,这有所改变了.
替代InvokeRequired的方法是DispatcherObject.CheckAccess()或DispatcherObject.VerifyAccess()方法,用于指示当前线程是否可以直接访问控件.
替代Invoke的方法是DispatcherObject.Dispatcher.BeginInvoke(...)方法
参考代码:
//
Uses the DispatcherObject.CheckAccess method to determine if
//
the calling thread has access to the thread the UI object is on
private
void
TryToUpdateButtonCheckAccess(
object
uiObject)
{
Button theButton
=
uiObject
as
Button;
if
(theButton
!=
null
)
{
//
Checking if this thread has access to the object
if
(theButton.CheckAccess())
{
//
This thread has access so it can update the UI thread
UpdateButtonUI(theButton);
}
else
{
//
This thread does not have access to the UI thread
//
Pushing update method on the Dispatcher of the UI thread
theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new
UpdateUIDelegate(UpdateButtonUI), theButton);
}
}
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted @ 2007-05-10 21:00
周银辉
阅读(5561)
评论(7)
编辑
收藏
发表评论
1134151
回复
引用
查看
#1楼
[
楼主
]
2007-05-10 21:47
周银辉
补充,关于.net2.0中跨线程的控件访问,请参考这里:
http://www.cnblogs.com/zhouyinhui/archive/2006/12/05/583246.html
回复
引用
#2楼
2007-05-11 13:16
saucer[未注册用户]
参考System.Threading.SynchronizationContext类
回复
引用
#3楼
2007-07-20 00:10
王计平[未注册用户]
好像以前在win32编程时,可以访问主线程的控件,不知道win32和managed编程方式为什么会有这种区别。
我有点懒了,一般自己如果是启动一个线程访问主线程的控件,都设置Check为false,自己注意一下互斥访问,还暂时没有什么问题,不知道理论上这种方法是不行还是不好,有高手给解答一下吗?
回复
引用
查看
#4楼
[
楼主
]
2007-07-20 09:10
周银辉
@王计平
.net1.1中没有Control.CheckForIllegalCrossThreadCalls属性,可直接访问
.net2.0中可以直接设置成False,但不好
.net3.0中没有Control.CheckForIllegalCrossThreadCalls,但必须Invoke
回复
引用
#5楼
2008-02-14 11:51
在线代理[未注册用户]
http://msdn2.microsoft.com/en-us/library/ms741870.aspx
这里讲的就是wpf的 thread model。
回复
引用
#6楼
2008-04-02 10:42
曾庆军[未注册用户]
周兄,你好呀,我叫曾庆军,想请教你一个问题,在3.0中如何使用2.0中的控件呢,比如:2.0中dataGridView如何在3.0中使用呀,谢谢了。
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
742134
J8+KT1dK734=
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
美国空军拟最多购买1.8万台iPad 2
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
·
HTC首款Android4.0手机大曝光
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
GE:Imagination at work
昵称:
周银辉
园龄:
5年9个月
粉丝:
212
关注:
10
搜索
随笔分类
(319)
.Net(57)
(rss)
Algorithm(44)
(rss)
Assemble (2)
(rss)
C++(9)
(rss)
Composite Application(12)
(rss)
DB(2)
(rss)
Linux(11)
(rss)
OO & Pattern(4)
(rss)
Other(38)
(rss)
Silverlight(6)
(rss)
Team(6)
(rss)
UML(3)
(rss)
Windows Phone(2)
(rss)
WPF(119)
(rss)
XNA(4)
(rss)
随笔档案
(292)
2011年7月 (1)
2011年4月 (2)
2011年3月 (2)
2011年2月 (7)
2011年1月 (9)
2010年10月 (2)
2010年9月 (3)
2010年8月 (4)
2010年7月 (4)
2010年6月 (10)
2010年5月 (5)
2010年4月 (1)
2010年3月 (7)
2010年2月 (7)
2010年1月 (1)
2009年12月 (5)
2009年11月 (5)
2009年10月 (7)
2009年9月 (9)
2009年8月 (3)
2009年7月 (3)
2009年6月 (6)
2009年2月 (4)
2009年1月 (3)
2008年12月 (4)
2008年11月 (3)
2008年10月 (1)
2008年9月 (6)
2008年8月 (6)
2008年7月 (6)
2008年6月 (2)
2008年5月 (4)
2008年4月 (5)
2008年3月 (4)
2008年2月 (1)
2008年1月 (8)
2007年12月 (7)
2007年11月 (6)
2007年10月 (5)
2007年9月 (5)
2007年8月 (11)
2007年7月 (8)
2007年6月 (5)
2007年5月 (11)
2007年4月 (5)
2007年3月 (17)
2007年2月 (1)
2007年1月 (6)
2006年12月 (8)
2006年11月 (2)
2006年10月 (7)
2006年6月 (11)
2006年5月 (17)
阅读排行榜