0

在将结果返回给用户后,我需要在 C# webservice 中调用一些函数,所以我打算使用 OneWay 方法。

我在同一个项目上创建了 2 个 Web 服务,如下所示:第一个:调用者服务:

public class Caller : System.Web.Services.WebService {

[WebMethod]
public string HelloWorld() {

    var bg = new Background();
    bg.HelloWorldBG();
    return "Hello World";
}
}

第二个要在后台调用的服务:

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples", SessionMode = SessionMode.Required)]
public class Background : System.Web.Services.WebService {

[SoapDocumentMethod(OneWay = true)]
[WebMethod(EnableSession = true)]
public void HelloWorldBG()
{
    Thread.Sleep(60000);
    var file = @"D:\testHello.txt";
    File.WriteAllText(file, "Hello World");
}    

}

但是当我调用 HelloWorld() 它在完成 HelloWorldBG() 的执行之前不会返回

4

1 回答 1

1

您可以通过使用您的方法启动新任务来运行从线程池中挑选的单独线程:

var bg = new Background();
Task.Factory.StartNew(bg.HelloWorldBG);
return "Hello World";
于 2013-09-05T13:23:09.207 回答