• WC框架


    ChannelDispatcher 字段

    public class ChannelDispatcher : ChannelDispatcherBase
    {
        // Fields
        private ThreadSafeMessageFilterTable<EndpointAddress> addressTable;
        private string bindingName;
        private SynchronizedCollection<IChannelInitializer> channelInitializers;//通道初始化器
        private CommunicationObjectManager<IChannel> channels;//通道管理器
        private EndpointDispatcherCollection endpointDispatchers;
        private ErrorBehavior errorBehavior;
        private Collection<IErrorHandler> errorHandlers;//错误处理器
        private EndpointDispatcherTable filterTable;
        private ServiceHostBase host;
        private bool includeExceptionDetailInFaults;
        private bool isTransactedReceive;
        private readonly IChannelListener listener;
        private ListenerHandler listenerHandler;//
        private int maxPendingReceives;
        private int maxTransactedBatchSize;
        private MessageVersion messageVersion;
        private SynchronizedChannelCollection<IChannel> pendingChannels;
        private bool performDefaultCloseInput;
        private bool receiveContextEnabled;
        private bool receiveSynchronously;
        private bool sendAsynchronously;
        private ServiceThrottle serviceThrottle;
        private bool session;
        private SharedRuntimeState shared;
        private IDefaultCommunicationTimeouts timeouts;
        private IsolationLevel transactionIsolationLevel;
        private bool transactionIsolationLevelSet;
        private TimeSpan transactionTimeout;

    }

    ChannelHandle:

    private void HandleReceiveComplete(RequestContext context)
    {
        if ((context == null) && this.incrementedActivityCountInConstructor)
        {
            this.listener.ChannelDispatcher.Channels.DecrementActivityCount();
        }
        if (this.channel != null)
        {
            this.channel.HandleReceiveComplete(context);
        }
        else if ((context == null) && this.hasSession)
        {
            bool flag;
            lock (this.ThisLock)
            {
                flag = !this.doneReceiving;
                this.doneReceiving = true;
            }
            if (flag)
            {
                this.receiver.Close();
                if (this.idleManager != null)
                {
                    this.idleManager.CancelTimer();
                }
                ServiceThrottle throttle = this.throttle;
                if (throttle != null)
                {
                    throttle.DeactivateChannel();
                }
            }
        }
    }

  • 相关阅读:
    647. 回文子串
    109. 有序链表转换二叉搜索树
    第1篇 第1章 走进推荐系统
    推荐系统为什么要分测试集与训练集
    面向对象案例 烤地瓜 搬家具python实现
    python面向对象方法
    python实现学生信息系统
    随机数据的生成
    Python中numpy的应用
    pandas 的index用途
  • 原文地址:https://www.cnblogs.com/qianyz/p/2690372.html
Copyright © 2020-2023  润新知