您的位置: 百色信息港 > 科技

简单介绍Net30中跨线程访问控件

发布时间:2019-11-05 20:28:37

这两天用WPF做一个项目的UI部分时,发现跨线程地访问了UI控件,自然地报异常了。当时找了半天也没在控件中找到InvokeRequired属性和Invoke方法,郁闷之极.....发现在.net3.0中,这有所改变了。  替代InvokeRequired的方法是DispatcherObject.CheckAccess()或DispatcherObject.VerifyAccess()方法,用于指示当前线程是否可以直接访问控件。

替代Invoke的方法是DispatcherObject.Dispatcher.BeginInvoke(...)方法。

参考代码:

以下是引用片段:

//UsestheDispatcherObject.CheckAccessmethodtodetermineif

//thecallingthreadhasaccesstothethreadtheUIobjectison

privatevoidTryToUpdateButtonCheckAccess(objectuiObject)

{

ButtontheButton=uiObjectasButton;

if(theButton!=null)

{

//Checkingifthisthreadhasaccesstotheobject

if(theButton.CheckAccess())

{

//ThisthreadhasaccesssoitcanupdatetheUIthread

UpdateButtonUI(theButton);

}

else

{

//ThisthreaddoesnothaveaccesstotheUIthread

//PushingupdatemethodontheDispatcheroftheUIthread

theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,

newUpdateUIDelegate(UpdateButtonUI),theButton);

}

}

}

查看本文来源

【揭秘】激光近视手术,为什么更多人选择全飞秒SMILE激光手术!
什么是艺术种植,艺术种植流程和注意事项你知道吗?
牙周炎的十大表现症状,如果有,赶紧重视起来
斜弱视怎么治疗
美容整形医院哪家好
猜你会喜欢的
猜你会喜欢的