- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 WCF 编写的文件传输服务。它接收客户端发送的文件。客户端反过来使用 FileStream + MessageContract 发送文件。我使用以下属性将 WCF 文件传输服务设为单例
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
我尝试在客户端中使用多线程。每个线程创建一个 channelfactory + proxy.CreateChannel 的实例,并通过一个不同的文件发送到服务。我在服务端没有任何锁,一次只允许传输一个文件,在客户端也没有。该代码是一种没有状态持久性的直通代码。
我面临的问题是,我没有看到多个线程试图发送多个文件。每次我尝试使用多个线程传输多个文件时,服务类型不接受同一实例的多个文件。这导致文件按顺序传输而不是并行传输。我从客户端感觉到文件已发送,但在服务端,它只是被阻止了。
我尝试使用 ServiceThrottling 属性,但我仍然没有发现任何区别。是我做错了什么,还是这种方法无效?
一个客户端只能通过一个 channel 发送一个文件?许多线程不能将许多文件发送到同一服务吗?有人可以帮帮我吗。
谢谢桑迪普
最佳答案
我不想承认我在这个系列中遇到的愚蠢错误,但我承认,我是多么愚蠢。
单线程执行的原因。由于我在服务入口的开头立即加了一把锁,因此在其余等待期间只允许一个线程。
执行几个线程而不是多个线程的原因。由于带宽仅为 2MBPS,而我正尝试传输 10 个文件,每个文件大小为 10MB,因此我假设网络阻塞了。当我尝试处理 10 个文件时,每个 100KB 的多线程都非常有效,我还能够使用 maxConcurrentCalls 控制线程的入口。
干杯,大家,感谢YK1
顺便说一句。如果我错了,请纠正我关于网络带宽是罪魁祸首的假设。
关于c# - WCF + 单例 + 文件传输 + 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641959/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!