【发布时间】:2016-12-13 00:37:53
【问题描述】:
由于内部操作依赖于不支持多线程调用的旧 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,Thread=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
我怎样才能得到我想要的?谢谢。
【问题讨论】:
-
我可以建议这个几乎相同的问题的答案:c# - Force WCF to use one thread - Stack Overflow
标签: wcf