来自  资质荣誉 2019-09-25 08:29 的文章
当前位置: 澳门太阳娱乐手机登录 > 资质荣誉 > 正文

粗略介绍

那二日用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);
  }
  }
  }转载自:

本文由澳门太阳娱乐手机登录发布于 资质荣誉,转载请注明出处:粗略介绍

关键词: