我开发了一个概念验证应用程序,用于查询WCF是否支持多线程.
现在,我所做的就是创建一个标有的服务合同
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple,
UseSynchronizationContext = true)]
Run Code Online (Sandbox Code Playgroud)
有两个操作来获取固定文本.第一种方法执行a Thread.Sleep
8秒钟以使响应延迟,另一种方法直接返回数据.
我遇到的问题是当我运行两个客户端应用程序实例并从第一个客户端请求延迟方法并从第二个客户端请求另一个方法时,我得到了一个顺序响应.
当服务忙于另一个请求时,如何从服务获得响应?
namespace WCFSyncService
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)],
ConcurrencyMode = ConcurrencyMode.Multiple,
UseSynchronizationContext = true)]
public class ServiceImplementation : IService
{
public ServiceImplementation()
{
}
#region IService Members
public string GetDelayedResponse()
{
System.Threading.Thread.Sleep(8000);
return "Slow";
}
public string GetDirectResponse()
{
return "Fast";
}
#endregion
}
}
Run Code Online (Sandbox Code Playgroud)
我需要调用方法GetDelayedResponse
,GetDirectResponse
同时在8秒结束前获得"快速"文本.
托管应用程序代码
namespace ServiceHostApplication
{
public partial class frmMain : Form
{
private WCFSessionServer.IService oService;
public frmMain() …
Run Code Online (Sandbox Code Playgroud) wcf ×1