Hva er den beste måten å håndtere asynkrone HttpWebRequest-unntak i C #?

Jeg jobber med en kode for å bruke HttpWebRequest asynkront. Hvis noen av dere noen gang har gjort dette før, vet du at feilhåndtering kan være litt vondt, for hvis et unntak blir kastet i en av tilbakeringingsmetodene, kan det ikke sendes tilbake til ringekoden via et forsøk / fangstblokk.

Det jeg vil gjøre er å håndtere feil ved å lagre unntak i tilstandsobjektet mitt som blir sendt til hver tilbakeringingsmetode. Hvis et unntak blir fanget, vil tilstandsobjektet bli oppdatert, og deretter blir http-samtalen avbrutt. Problemet jeg har er at i mitt statsobjekt må jeg bruke en Exception-egenskap slik at alle typer unntak kan lagres. Når ringekoden sjekker tilstandsobjektet og "ser" et unntak, vet den ikke hvilken type unntak det er.

Er det en måte å la statsobjektet mitt ha en hvilken som helst type unntak, men likevel holde unntaket sterkt skrevet?

State Object

public class HttpPostClientAsyncModel
    {
        public HttpResponseSnapshot Response { get; set; }
        public HttpPostClientAsyncStatus Status { get; set; }
        public Exception Exception { get; set; }
        public WebRequest Request { get; set; }
    }
6
задан GregB 25 May 2011 в 23:39
поделиться