2014-01-08 62 views
1

我正在使用WCF服務,它不是異步服務。 我在裏面做數據庫操作。數據庫操作返回給我巨大的結果。 我想提供一種方法來取消對我的客戶的操作。 任何人都可以請建議實現相同。我GOOGLE了很多 也可以找出一些解決辦法,有人說是使服務操作異步。這是我從msdn http://msdn.microsoft.com/en-us/library/ms731177(v=vs.110).aspx 但我該如何阻止它。 此外,由於我是新手,我無法弄清楚這件事。 任何人都可以請幫助我這個。 在此先感謝。取消服務電話

問候

回答

0

你可以保持您的服務同步,但使你的方法裏面異步調用,圍繞數據庫查詢爲例。在這種情況下,您可以使用支持CancellationToken的類Task。但是你應該在.NET 4以上。

+0

WCF任務不支持取消。 – usr

0

我,你只是想取消服務電話(沒有會話鎖定(會話創建/更新用/刪除),你可以調用Ajax在javascript般的服務:

var xhr; 

    var serviceUrl = "Service1.svc/GetData"; 
    xhr= $.ajax({ 
     type: "POST", 
     url: serviceUrl, 
     data: "{\"value\":\"request\"}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      //anything you need to do on success 
     } 
    }); 

對於中止請求,您可以這樣做:

if(xhr && xhr.readystate != 4){ 
     xhr.abort(); 
    } 

請不將中止處理程序等要求&不要求自身,如果您正在使用會話(除了讀)播放,它不會工作&等待reques完成。

如果您有上述情況,最好使用vzayko提到的Task

另外,如果您使用的是MVC 4,您還可以使用TAP(Task-based Asynchronous Pattern),它專門針對使用ASP.net MVC中的任務進行了優化。

+0

我檢查了鏈接http://msdn.microsoft.com/en-us/library/ms731177(v=vs.110).aspx。但我無法執行取消。任何人都可以告訴我該怎麼做? –

+0

它的異步調用。是不可能通過這個 –

+0

實現取消功能是的,這似乎是Simple CallBack-Pattern的Service實現。使用可以從上面的鏈接使用'任務'或'基於任務的異步模式' –