WCF线程安全性问题有所解决

WCF开发工具在开发领域中占据着一个比较重要的地位。它的出现可以帮助开发人员打造一款跨平台的企业级解决方案。在这里我们将会通过对WCF线程的了解来更加深入的对这一工具有一个了解。#t#

创新互联专注于企业网络营销推广、网站重做改版、富县网站定制设计、自适应品牌网站建设、H5响应式网站商城网站制作、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为富县等各大城市提供网站开发制作服务。

虽然有许多人对WCF线程表示怀疑,但在年复一年的不断发展中,他的安全性也在不断提高。保障WCF线程正常运行是完全有可能的,但前提是要深入理解到底什么是WCF线程,及他是怎么运作的。

对于这些操作,任意创建一个新的线程来执行都是等效的。但是有些情况下,有些操作却只能在固定的线程下执行。比如,在GUI应用下,对控件的访问就需要在创建该控件的线程下执行;

或者我们在某个固定的线程中通过TLS(Thread Local Storage)设置了一些Context信息,供具体的操作使用,我们把操作和某个固定的线程的依赖称为线程关联性(Thread Affinity)。

对应WCF来说,无论是host一个service,还是在调用service时制定callback,在默认的情况下,service和callback的操作将自动和当前的SynchonizationContext进行关联(如何有的话)。

也就是说,如过我们的service被host到Windows Form application下,那么service的操作将在UI 线程下执行;同理,如何我们在一个Windows Forms UI线程下调用duplex service并制定callback,那么callback的最终执行将在UI线程。

关于WCF线程关联性的控制,可以通过ServiceBehavior或者CallbackBehavior的UseSynchronizationContext属性进行设定,该属性默认为true,这正式WCF默认具有线程关联性的原因。

现在我们来实现我们的第二套方案:让Callback的执行不必绑定到UI线程。为此我们只需要加上如何的CallbackBehavior attribute就可以了

 
 
 
  1. namespace Artech.ThreadAffinity.Clients   
  2. {   
  3. [CallbackBehavior(UseSynchronizationContext = false)]   
  4. public class CalculateCallback : ICalculateCallback   
  5. {   
  6. public static TextBox ResultPanel;   
  7. #region ICalculateCallback Members   
  8. public void DisplayResult(double result)   
  9. {   
  10. ResultPanel.Text = result.ToString();   
  11. }   
  12. #endregion   
  13. }   
  14. }  

以上就是对WCF线程的相关介绍。

文章标题:WCF线程安全性问题有所解决
浏览地址:http://www.zyruijie.cn/qtweb/news4/9854.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联