Domanda

IL Close metodo su un ICommunicationObject può generare due tipi di eccezioni come delinea MSDN Qui.Capisco perché il Close può generare tali eccezioni, ma quello che non capisco è il motivo per cui il metodo Dispose su un proxy di servizio chiama il metodo Close metodo senza a try intorno ad esso.Non è tuo Dispose metodo l'unico posto in cui vuoi assicurarti di non generare eccezioni?

È stato utile?

Soluzione

Sembra essere un modello di progettazione comune nel codice .NET.Ecco una citazione da Linee guida per la progettazione del quadro

Considerare la possibilità di fornire il metodo Close(), oltre a Dispose(), se close è la terminologia standard nell'area.In tal caso, è importante rendere l'implementazione Close identica a Dispose...

Ecco un post sul blog in cui è possibile trovare una soluzione alternativa per questo problema di progettazione System.ServiceModel.ClientBase

Altri suggerimenti

Sì, in genere Dispose è uno dei luoghi in cui si desidera garantire che non vengano generate eccezioni.Tuttavia, sulla base di questo MSDN discussione del forum c'erano alcune ragioni storiche per questo comportamento.Pertanto, il modello consigliato è il paradigma try{Close}/catch{Abort}.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top