none
WCF 中 SynchronizationContext 的使用?? RRS feed

  • 问题

  • 在看WCF服务编程的第8章 并发管理的354页,资源同步上下文中,我对 SynchronizationContext 的理解是控制访问资源的线程,因为在同一线程中处理请求时串行的,就不会对资源产生并发或死锁,我写了一个简单的对资源的访问控制示例如下:
    Contract:

    [ServiceContract]
    public interface ICrunching
    {
        [OperationContract]
        long Add();
    }

    Business:

    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class Crunching : Contracts.ICrunching
    {
        public long Add()
        {
            return CrunchingResource.Add();
        }
    }

    Resource:

    public static class CrunchingResource
    {
        private static long _count;
        private static System.Threading.SynchronizationContext _syncContent;
    
        static CrunchingResource()
        {
            _count = 1;
            _syncContent = new System.Threading.SynchronizationContext();
        }
    
        public static long Add()
        {
            long result = 0;
            System.Threading.SendOrPostCallback doWork = (arg) =>
            {
                _count++;
                if (_count % 5 == 0)
                    result = _count;
                else
                    result = _count % 5;
            };
            _syncContent.Send(doWork, null);
    
            return result;
        }
    }

    请问我对 SynchronizationContext 的理解正确吗?示例代码有问题嘛?
    2012年2月20日 8:57

答案