内部アクションがマルチスレッド呼び出しをサポートしていないレガシー COM オブジェクトに依存しているため、WCF サービスを強制的にシングル スレッドで実行する必要があります。
次に、次のサンプルコードを書きましたが、期待どおりに動作しません:(
[ServiceContract]
public interface ITestService
{
[OperationContract]
void TestAction();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
public class TestServiceImp : ITestService
{
void TestAction()
{
Trace.WriteLine("Entering method TestAction, Thread={0}" + Thread.CurrentThread.ManagedThreadId);
//...
Trace.WriteLine("Leaving method TestAction, Thread={0}" + Thread.CurrentThread.ManagedThreadId);
}
}
実際の結果は次のようなものです。
メソッド TestAction、Thread=4 に入る
メソッド TestAction を終了、Thread=4
メソッド TestAction に入る、スレッド = 5
メソッド TestAction を終了、Thread=5
メソッド TestAction、Thread=8 に入る
メソッド TestAction を終了、Thread=8
私の期待は、
メソッド TestAction、Thread=4 に入る
メソッド TestAction を終了、Thread=4
メソッド TestAction、Thread=4 に入る
メソッド TestAction を終了、Thread=4
メソッド TestAction、Thread=4 に入る
メソッド TestAction を終了、Thread=4
どうすれば欲しいものを手に入れることができますか? ありがとう。