我使用的是WCF服务,它不是异步服务。 我在其中进行数据库操作。数据库操作给我带来了巨大的成果。 我想提供一种取消对客户端操作的方法。 任何人都可以建议达到同样的目的。我google了很多 也可以找到一些解决方案,有些人说服务操作是异步的。这是我从msdn得到的 http://msdn.microsoft.com/en-us/library/ms731177(v=vs.110).aspx 但是我该怎么做呢。 另外,由于我是新手,我无法弄清楚这件事。 任何人都可以帮我这个。 提前谢谢。
此致
答案 0 :(得分:0)
您可以保持服务同步,但在方法内部进行异步调用,例如围绕数据库查询。在这种情况下,您可以使用支持CancellationToken的类Task。但是你应该使用.NET 4及更高版本。
答案 1 :(得分:0)
我只想取消服务呼叫(没有会话锁定(会话创建/更新/删除),你可以在javascript
中对服务进行ajax调用,如:
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();
}
请不要中止等待请求的处理程序&不要求自己,如果你正在玩Session(读取除外),它将不起作用&等待请求完成。
如果您有上述情况,最好使用vzayko提到的Task。
此外,如果您正在使用MVC 4,您还可以使用TAP(Task-based Asynchronous Pattern),它专门针对在ASP.net MVC中使用任务进行了优化。