【问题标题】:Synchronization method in WCFWCF中的同步方法
【发布时间】:2014-04-27 07:12:20
【问题描述】:

我编写 WCF 应用程序。在服务中,我有方法,我想将此方法同步给所有客户。因此,一个客户端现在可以使用此方法,并在第一个客户端完成时让客户端等待。我尝试[MethodImpl(MethodImplOptions.Synchronized)],但这不起作用。这是我的服务类

namespace WcfServiceLibrary1 {
    [ServiceBehavior(UseSynchronizationContext = false)]
    public class Service1 : IService1 {


        [MethodImpl(MethodImplOptions.Synchronized)]
        public List<String> getBrute() {
           //method body
        }
     }
}

WCF 中的同步方法是怎样的?

【问题讨论】:

标签: c# multithreading wcf synchronization


【解决方案1】:

我认为只有在客户端注册了从服务器客户端的回调的双工绑定(回调)的上下文中,该设置才真正有意义。这是一个有点异国情调的情况。它基本上说当你从服务器接收到这个回调时,将它调用到主线程上,而不是仅仅在某个任意线程池线程上运行它。

要做你想做的事,你需要在服务器上创建一个显式锁:

public class Service1 : IService1 {
    private static readonly object @lock = new object();

    public List<String> getBrute() {
       lock (@lock)
       {
           //method body
       }
    }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多