本篇文章為大家展示了Silverlight 3中怎么實現(xiàn)異步域操作,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
公司主營業(yè)務(wù):成都網(wǎng)站制作、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出路橋免費做網(wǎng)站回饋大家。
1.Silverlight 3異步域操作
DomainContext支持3種類型域操作:Query,Submit和Invoke。這些操作中的的每一種都有一個相應(yīng)的操作類型用于描述正在進行中的異步操作。例如,當(dāng)一個查詢加載到一個DomainContext中,異步的Load調(diào)用將立即返回一個LoadOperation實例。請參考如下代碼:
HRContext _ctxt = new HRContext(); var query = from e in _ctxt.GetEmployeesQuery() where e.ManagerID == 1 select e; LoadOperation lo = _ctxt.Load(query);
上面的操作結(jié)果既提供了有關(guān)于正在進行的操作的動態(tài)的可綁定的狀態(tài)信息,也提供了可取消當(dāng)前操作的支持。同樣地,一個提交請求將返回一個SubmitOperation,而服務(wù)操作調(diào)用將返回一個InvokeOperation。
接下來,我們將詳細地討論這些Silverlight 3異步域操作及其基類有關(guān)知識。
2.基類OperationBase
這個類是所有.NET RIA服務(wù)異步操作的基類。這個類實現(xiàn)了接口INotifyPropertyChanged,因此,它的操作狀態(tài)成員可以是數(shù)據(jù)綁定型的,而且當(dāng)操作的完成狀態(tài)改變時,將會引發(fā)通知。
基類OperationBase提供了如下成員:
◆IsComplete—一旦操作完成便返回true。注意,當(dāng)一項操作成功結(jié)束,或者是完成但仍帶有錯誤,或者是此操作被取消,都被認為是操作完成。
◆Completed事件—當(dāng)一項操作完成時引發(fā)此事件。
◆UserState—與操作相關(guān)的用戶狀態(tài)。
◆Cancel()/CanCancel/IsCanceled—如果操作能夠被取消并且沒有完成,那么CanCancel將返回true。在取消操作前,將會檢查CanCancel的值。如果操作已經(jīng)完成,則將拋出一個異常。
◆Error/HasError—如果操作已經(jīng)完成,但發(fā)生了錯誤,那么HasError的值將為true,而且Error中將包含相應(yīng)的異常信息。
下面你將會看到,一個域操作中還可以指定一個操作完成對應(yīng)的回調(diào)函數(shù)。如果指定了一個回調(diào)函數(shù),那么,此回調(diào)函數(shù)在任何情況下也會被調(diào)用,無論此操作是成功結(jié)束,還是完成但仍帶有錯誤,還是此操作被取消。
另外值得注意的是,這個回調(diào)函數(shù)在Completed事件引發(fā)以前也會被調(diào)用。
3.LoadOperation操作
DomainContext.Load
◆Entities—一個已加載的實體的強類型枚舉類型。一旦調(diào)用返回,集合即變?yōu)榭?。注意,此集合實現(xiàn)了接口INotifyCollectionChanged,當(dāng)操作完成時自新將得到更新。
◆AllEntities—由查詢操作加載的所有實體的集合,而且還包括任何相關(guān)聯(lián)的實體。注意,此對象也實現(xiàn)了接口INotifyCollectionChanged。一旦調(diào)用返回,集合即變?yōu)榭?。注意,此對象也實現(xiàn)了接口INotifyCollectionChanged,當(dāng)操作完成時自新將得到更新。
◆TotalEntityCount—返回查詢中對應(yīng)的所有服務(wù)器端實體總數(shù)。
◆EntityQuery—用于初始化加載操作。
◆MergeOption—加載操作中指定的MergeOption。
下面的代碼展示了如何指定一個加載回調(diào)函數(shù):
object state =……//用戶狀態(tài) 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 =……//用戶狀態(tài) LoadOperation lo = _ctxt.Load(query, null, state); lo.Completed += this.OnEmployeesLoaded; …… private void OnEmployeesLoaded(object sender, EventArgs e) { LoadOperation lo = (LoadOperation)sender; …… }
當(dāng)有許多方面(可能是外面的)對當(dāng)前操作進度感興趣時,那么上面的事件處理器創(chuàng)建是非常有用的。
4.SubmitOperation操作
DomainContext.SubmitChanges方法將返回一個SubmitOperation的實例。其中,SubmitOperation代表了正在進行的異步提交操作;此外,DomainContext.SubmitChanges方法還提供了下面額外的狀態(tài)及功能支持:
◆ChangeSet—正在提交的EntityChangeSet
◆EntitiesInError—對于一個產(chǎn)生校驗或沖突錯誤的提交操作來說,它代表了產(chǎn)生錯誤的實體的集合。
另外,回調(diào)函數(shù)及Completed事件的提交與前面解釋的LoadOperation中的使用方式一致,在此不再贅述。
六、InvokeOperation操作
當(dāng)調(diào)用一個ServiceOperation(服務(wù)操作)時,將返回一個強類型的InvokeOperation
◆OperationName—要調(diào)用的操作的名字
◆Parameters—要操作的名字/值形式的字典參數(shù)
◆ValidationErrors—當(dāng)調(diào)用失敗時對應(yīng)的檢驗錯誤信息的集合
◆Value—ServiceOperation返回的值
上述內(nèi)容就是Silverlight 3中怎么實現(xiàn)異步域操作,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。