Entsorgen Kanal erstellt von WCF ChannelFactory

Ich bin auf der Suche nach einem sauber die ChannelFactory erstellen Kanäle für mich mit dem Fähigkeit zu entsorgen nach dem Gebrauch.

Dies ist, was ich habe:

public class ClientFactory : IClientFactory
{
    private const string endpointName = "IMyService";
    private readonly ChannelFactory<IMyService> _factory;

    public ClientFactory()
    {
        _factory = new ChannelFactory<IMyService>(endpointName);
    }

    public Client<IMyService> GetClient()
    {       
        IMyService channel = _factory.CreateChannel();
        return new Client<IMyService>(channel);
    }
}

public class Client<T> : IDisposable
{
    public T Channel { get; private set; }

    public Client(T channel)
    {
        if (channel == null)
            throw new ArgumentException("channel");

        Channel = channel;
    }

    public void Dispose()
    {
        (Channel as IDisposable).Dispose();
    }
}

//usage
using (var client = _serviceFactory.GetClient())
{
    client.Channel.DoStuff();
}

Ist das eine gute Lösung?

Gibt es Reiniger Möglichkeiten, dies zu tun?

  • Nicht über den Kanal, wie. Verwenden: try { Kanal.Close(); } catch (CommunicationException) { channel.Abort(); } catch (TimeoutException) { channel.Abort(); }
  • Wie kommt das? Nicht Entsorgung Kanal das gleiche tun für mich?
  • Entsorgen Sie werden in der Nähe nennen. In der Nähe auslösen könnte. Schreiben Sie alle Ihre mit Aussagen wie: try { using (...) { ... } } catch (CommunicationException) { } oder verwenden Sie mein Muster oben.
  • Thx, wusste das nicht.
InformationsquelleAutor David | 2013-03-05
Schreibe einen Kommentar