Winforms应用程序中的WCF - 它总是单线程吗?

dar*_*rez 4 wcf winforms

我有一个公开WCF服务的Winforms应用程序.

从IIS,我尝试使用该服务.我尝试在2台不同的计算机上调用test1.aspx,然后在Winforms应用程序中调用WCF.

test1.aspx => from computer 1 => First Call
test1.aspx => from computer 2 => Second Call
Run Code Online (Sandbox Code Playgroud)

我看到WCF是单线程的,在它开始处理CALL 2之前,它需要完成处理CALL 1.

[ServiceBehavior(IncludeExceptionDetailInFaults = true, 
                 ConcurrencyMode=ConcurrencyMode.Multiple, 
                 InstanceContextMode=InstanceContextMode.PerSession)]
Run Code Online (Sandbox Code Playgroud)

我有Windows Server 2008 R2和IIS 7.5

谁能帮我?

Lad*_*nka 11

当服务在UI线程中托管时,WCF的行为可能与您的情况不同.默认情况下,WCF处理加入Windows消息循环,因此请求处理不仅会变为串行,而且还会停止WinForms UI中的所有事件处理(应用程序将冻结).

要避免此行为,您必须明确说明您不希望在UI线程中托管服务:

[ServiceBehavior(UseSynchronizationContext = false)]
Run Code Online (Sandbox Code Playgroud)