【发布时间】:2013-05-20 03:06:16
【问题描述】:
我有一个使用 WCF 编写的文件传输服务。它接收客户端发送的文件。 客户端反过来使用 FileStream + MessageContract 跨文件发送。我使用以下属性将 WCF 文件传输服务设置为单例
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
我尝试在客户端本身中使用多个线程。 每个线程创建一个 channelfactory + proxy.CreateChannel 的实例,并通过一个不同的文件发送给服务。我在服务端没有任何锁,它一次只允许传输一个文件,在客户端也没有。该代码是一种没有状态持久性的直通代码。
我面临的问题是,我没有看到多个线程尝试发送多个文件。每次我尝试使用多个线程传输多个文件时,服务类型都不接受同一实例中的多个文件。这导致文件被顺序传输而不是并行传输。我觉得从客户端发送了文件,但在服务端它只是被阻止了。
我尝试使用 ServiceThrottling 属性,但仍然没有发现任何区别。 我做错了什么还是这种方法无效?
一个客户端只能通过一个通道发送一个文件?许多线程不能将许多文件发送到同一个服务吗?谁能帮帮我。
谢谢 桑迪普
【问题讨论】:
-
我成功了,我在服务的入口点有一个锁定对象。但我又面临一个问题。一次只传输两个文件。我需要添加任何其他待定配置吗?
标签: c# multithreading wcf singleton