我有一个多线程客户端用于处理并行请求数的WCF。不知怎的,它开始共享两个不同请求/线程的数据;我曾试图改变InstanceContextMode
和ConcurrencyMode
如下:WCF并发多线程客户端
- 默认InstanceContextMode = PerSession ConcurrencyMode =单
- InstanceContextMode = PerCall ConcurrencyMode =单
- InstanceContextMode = PerCall ConcurrencyMode =多
但到目前为止没有运气。没有可能导致此并发问题的共享变量和函数。根据MS文档PerCall
为每个单个调用创建实例,并且当实例拥有自己的专用内存堆栈时如何共享数据没有任何意义。
工作流程: 有三个主要组件WCF,.Net Assembly 1和.Net Assembly 2.有一个名为WCF的“Process”函数,该函数接受一个字符串参数,并根据通过完成的处理返回结构化对象WCF。 WCF中没有实例变量;功能中的所有内容。该函数对字符串做了很少的处理,并将其转换为结构化对象,然后将其传递给Assembly 1的函数做一些处理,然后使用反射的invoke方法将它传递给Assembly 2的函数。这是以不同方式混合两个不同并发呼叫的最终结果的整个过程。
如果有人能够帮助解决这个问题,我会非常感激。
我们需要看到更多的代码。没有共享变量时如何共享数据? – Laurijssen
在这里发布整个代码是不可能的,但我可以给你一个关于代码工作流程以及它如何工作的想法。 –