溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WCF線程怎么用

發(fā)布時間:2021-11-03 15:32:20 來源:億速云 閱讀:117 作者:小新 欄目:編程語言

小編給大家分享一下WCF線程怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

雖然有許多人對WCF線程表示懷疑,但在年復(fù)一年的不斷發(fā)展中,他的安全性也在不斷提高。保障WCF線程正常運(yùn)行是完全有可能的,但前提是要深入理解到底什么是WCF線程,及他是怎么運(yùn)作的。

對于這些操作,任意創(chuàng)建一個新的線程來執(zhí)行都是等效的。但是有些情況下,有些操作卻只能在固定的線程下執(zhí)行。比如,在GUI應(yīng)用下,對控件的訪問就需要在創(chuàng)建該控件的線程下執(zhí)行;

或者我們在某個固定的線程中通過TLS(Thread Local Storage)設(shè)置了一些Context信息,供具體的操作使用,我們把操作和某個固定的線程的依賴稱為線程關(guān)聯(lián)性(Thread Affinity)。

對應(yīng)WCF來說,無論是host一個service,還是在調(diào)用service時制定callback,在默認(rèn)的情況下,service和callback的操作將自動和當(dāng)前的SynchonizationContext進(jìn)行關(guān)聯(lián)(如何有的話)。

也就是說,如過我們的service被host到Windows Form application下,那么service的操作將在UI 線程下執(zhí)行;同理,如何我們在一個Windows Forms UI線程下調(diào)用duplex service并制定callback,那么callback的最終執(zhí)行將在UI線程。

關(guān)于WCF線程關(guān)聯(lián)性的控制,可以通過ServiceBehavior或者CallbackBehavior的UseSynchronizationContext屬性進(jìn)行設(shè)定,該屬性默認(rèn)為true,這正式WCF默認(rèn)具有線程關(guān)聯(lián)性的原因。

現(xiàn)在我們來實(shí)現(xiàn)我們的第二套方案:讓Callback的執(zhí)行不必綁定到UI線程。為此我們只需要加上如何的CallbackBehavior attribute就可以了

namespace Artech.ThreadAffinity.Clients  {  [CallbackBehavior(UseSynchronizationContext = false)]  public class CalculateCallback : ICalculateCallback  {  public static TextBox ResultPanel;  #region ICalculateCallback Members  public void DisplayResult(double result)  {  ResultPanel.Text = result.ToString();  }  #endregion  }  }

看完了這篇文章,相信你對“WCF線程怎么用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

wcf
AI