Sie die allgemeine Idee richtig haben. Ich habe die folgende Erweiterungsmethode verwendet, um die Zeilen wiederholten Codes auf ein Minimum zu beschränken.
public static class ICommunicationObjectExtensions
{
public static void SafelyCloseConnection(this ICommunicationObject objectToClose)
{
bool success = false;
try
{
objectToClose.Close();
success = true;
}
finally
{
if (!success)
{
objectToClose.Abort();
}
}
}
}
Beispiel Code dieser Erweiterung Methode:
HelloWorldServiceClient client = new HelloWorldServiceClient();
HelloWorldDataContract dc = new HelloWorldDataContract();
try
{
client.Open();
dc = client.SayHello();
} // Add catch blocks here for anything you want to handle.
finally
{
client.SafelyCloseConnection();
}
Natürlich ist die C#, aber ich denke, dass noch eine Hilfe sein soll.
ich Ihre Lösung mag, aber tun Sie eine haben, dass kann mit Dependency Injection verwendet werden. Da ein Service eine Abhängigkeit ist, möchte ich meinen Test dagegen nicht ausführen. –
Es ist nicht meine Lösung. In jedem Fall erwarte ich, dass Sie 'Service' nicht-statisch machen und die 'ChannelFactory ' oder den 'IClientChannel' injizieren können. –