Example #1
0
 internal static void RecordHost(this IServiceHost host, ServiceBase service)
 {
     lock (_hostLock)
     {
         IServiceHost dontcare;
         // if it is in the list and not disposed of, theres a problem
         if (_hosts.ContainsKey(service.GetHashCode()) && _hosts[service.GetHashCode()].TryGetTarget(out dontcare))
         {
             throw new ArgumentException("An instance of this service has already been hosted.");
         }
         else
         {
             _hosts.Add(service.GetHashCode(), new WeakReference<IServiceHost>(host)); // add to list
         }
     }
 }
Example #2
0
 internal static void RemoveHost(this IServiceHost host, ServiceBase service)
 {
     lock (_hostLock)
     {
         IServiceHost outedHost;
         if (_hosts.ContainsKey(service.GetHashCode()) && _hosts[service.GetHashCode()].TryGetTarget(out outedHost) && outedHost == host)
         {
             _hosts.Remove(service.GetHashCode());
         }
     }
 }