0

結果をユーザーに返した後、C# Web サービスでいくつかの関数を呼び出す必要があるため、OneWay メソッドを使用する予定です。

次のように、同じプロジェクトに 2 つの Web サービスを作成しました: 1 つ目: 呼び出し元サービス:

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

[WebMethod]
public string HelloWorld() {

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

バックグラウンドで呼び出される 2 番目のサービス:

[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 に答える