我需要强制我的WCF服务在单个线程中运行,因为内部操作取决于不支持多线程调用的传统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,线程= 4
离开方法TestAction,线程= 4
输入方法TestAction,线程= 5
离开方法TestAction,线程= 5
输入方法TestAction,线程= 8
离开方法TestAction,线程= 8
虽然我的期望是,
输入方法TestAction,线程= 4
离开方法TestAction,线程= 4
输入方法TestAction,线程= 4
离开方法TestAction,线程= 4
进入方法TestAction,Thread = 4
保留方法TestAction,线程= 4
我怎么能得到我想要的东西?谢谢。
我可以建议这个答案几乎相同的问题:[c# - 强制WCF使用一个线程 - Stack Overflow](http://stackoverflow.com/questions/20000078/force-wcf-to-use-one-线程/ 20010432#comment51204132_20010432) – 2015-07-25 16:11:57