中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Silverlight 3中怎么實現異步域操作

發布時間:2021-07-15 11:21:32 來源:億速云 閱讀:106 作者:Leah 欄目:編程語言

本篇文章為大家展示了Silverlight 3中怎么實現異步域操作,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.Silverlight 3異步域操作

DomainContext支持3種類型域操作:Query,Submit和Invoke。這些操作中的的每一種都有一個相應的操作類型用于描述正在進行中的異步操作。例如,當一個查詢加載到一個DomainContext中,異步的Load調用將立即返回一個LoadOperation實例。請參考如下代碼:

HRContext _ctxt = new HRContext();   var query = from e in _ctxt.GetEmployeesQuery()   where e.ManagerID == 1   select e;   LoadOperation lo = _ctxt.Load(query);

上面的操作結果既提供了有關于正在進行的操作的動態的可綁定的狀態信息,也提供了可取消當前操作的支持。同樣地,一個提交請求將返回一個SubmitOperation,而服務操作調用將返回一個InvokeOperation。

接下來,我們將詳細地討論這些Silverlight 3異步域操作及其基類有關知識。

2.基類OperationBase

這個類是所有.NET RIA服務異步操作的基類。這個類實現了接口INotifyPropertyChanged,因此,它的操作狀態成員可以是數據綁定型的,而且當操作的完成狀態改變時,將會引發通知。

基類OperationBase提供了如下成員:

◆IsComplete—一旦操作完成便返回true。注意,當一項操作成功結束,或者是完成但仍帶有錯誤,或者是此操作被取消,都被認為是操作完成。

◆Completed事件—當一項操作完成時引發此事件。

◆UserState—與操作相關的用戶狀態。

◆Cancel()/CanCancel/IsCanceled—如果操作能夠被取消并且沒有完成,那么CanCancel將返回true。在取消操作前,將會檢查CanCancel的值。如果操作已經完成,則將拋出一個異常。

◆Error/HasError—如果操作已經完成,但發生了錯誤,那么HasError的值將為true,而且Error中將包含相應的異常信息。

下面你將會看到,一個域操作中還可以指定一個操作完成對應的回調函數。如果指定了一個回調函數,那么,此回調函數在任何情況下也會被調用,無論此操作是成功結束,還是完成但仍帶有錯誤,還是此操作被取消。

另外值得注意的是,這個回調函數在Completed事件引發以前也會被調用。

3.LoadOperation操作

DomainContext.Load將返回一個LoadOperation的實例。LoadOperation描述了一個正在操作中的異步加載操作。另外,此操作還提供了下面額外的狀態及功能支持:

◆Entities—一個已加載的實體的強類型枚舉類型。一旦調用返回,集合即變為空。注意,此集合實現了接口INotifyCollectionChanged,當操作完成時自新將得到更新。

◆AllEntities—由查詢操作加載的所有實體的集合,而且還包括任何相關聯的實體。注意,此對象也實現了接口INotifyCollectionChanged。一旦調用返回,集合即變為空。注意,此對象也實現了接口INotifyCollectionChanged,當操作完成時自新將得到更新。

◆TotalEntityCount—返回查詢中對應的所有服務器端實體總數。

◆EntityQuery—用于初始化加載操作。

◆MergeOption—加載操作中指定的MergeOption。

下面的代碼展示了如何指定一個加載回調函數:

object state =……//用戶狀態  LoadOperation lo = _ctxt.Load(query,   EmployeesLoadedCallback, state);   ……  private void EmployeesLoadedCallback(LoadOperation lo)   {   if (!lo.HasError)   {   object state = lo.UserState;   foreach (Employee employee in lo.Entities)   {   //處理已加載的實例  }   }   else   {   //處理錯誤  }   }   要指定一個完成事件處理器,可以像下面這樣使用LoadOperation.Completed。  object state =……//用戶狀態  LoadOperation lo = _ctxt.Load(query, null, state);   lo.Completed += this.OnEmployeesLoaded;   ……  private void OnEmployeesLoaded(object sender, EventArgs e)   {   LoadOperation lo = (LoadOperation)sender;   ……  }

當有許多方面(可能是外面的)對當前操作進度感興趣時,那么上面的事件處理器創建是非常有用的。

4.SubmitOperation操作

DomainContext.SubmitChanges方法將返回一個SubmitOperation的實例。其中,SubmitOperation代表了正在進行的異步提交操作;此外,DomainContext.SubmitChanges方法還提供了下面額外的狀態及功能支持:

◆ChangeSet—正在提交的EntityChangeSet

◆EntitiesInError—對于一個產生校驗或沖突錯誤的提交操作來說,它代表了產生錯誤的實體的集合。
另外,回調函數及Completed事件的提交與前面解釋的LoadOperation中的使用方式一致,在此不再贅述。

六、InvokeOperation操作

當調用一個ServiceOperation(服務操作)時,將返回一個強類型的InvokeOperation。這里,T是ServiceOperation操作的返回類型。歸納來看,InvokeOperation操作提供了下面額外的狀態及功能支持:

◆OperationName—要調用的操作的名字

◆Parameters—要操作的名字/值形式的字典參數

◆ValidationErrors—當調用失敗時對應的檢驗錯誤信息的集合

◆Value—ServiceOperation返回的值

上述內容就是Silverlight 3中怎么實現異步域操作,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五大连池市| 鹤峰县| 望奎县| 仪征市| 山阳县| 盐山县| 四子王旗| 繁昌县| 大田县| 灌云县| 龙江县| 滕州市| 金寨县| 邯郸县| 昌宁县| 双城市| 怀化市| 怀来县| 普宁市| 竹北市| 辉县市| 上林县| 疏附县| 抚顺县| 通城县| 平南县| 潮安县| 石渠县| 景洪市| 邢台县| 二手房| 如皋市| 庆云县| 蚌埠市| 上饶县| 集贤县| 手游| 清苑县| 类乌齐县| 晴隆县| 古田县|