コード例 #1
0
 private bool setForward(TmphHost host)
 {
     if (isDisposed == 0 && host.HostToIpAddress())
     {
         var tcpServer = new Code.CSharp.TmphTcpServer { Host = host.Host, Port = host.Port };
         if (tcpServer.IpAddress != IPAddress.Any)
         {
             forwardHost = tcpServer;
             return true;
         }
     }
     return false;
 }
コード例 #2
0
 private void removeForward()
 {
     forwardHost = null;
 }
コード例 #3
0
        /// <summary>
        ///     释放资源
        /// </summary>
        public void Dispose()
        {
            if (Interlocked.Increment(ref isDisposed) == 1)
            {
                save();
                forwardHost = null;

                TmphPub.Dispose(ref fileWatcher);

                Monitor.Enter(domainLock);
                var domains = this.domains;
                this.domains = TmphDomainSearcher.Default;
                Monitor.Exit(domainLock);
                domains.Close();
                domains.Dispose();

                TmphServer[] servers = null;
                Monitor.Enter(hostLock);
                try
                {
                    servers = hosts.Values.GetArray();
                    hosts = null;
                }
                finally
                {
                    Monitor.Exit(hostLock);
                    if (servers != null) foreach (var server in servers) server.Dispose();
                }
            }
        }