Domanda

Sto lavorando in Silverlight 4 e l'attuazione di un servizio duplex Polling con un modello asincrono utilizzato per aggiornare i client.


    // interface for messages back to client
    [OperationContract(IsOneWay = true, AsyncPattern=true)]
    IAsyncResult BeginSendMessage(byte[] MessageData, AsyncCallback callback, object State);

    void EndSendMessage(IAsyncResult result);

io faccio la parte posteriore chiamata al client utilizzando un oggetto RequestState ho definito in modo da tenere traccia di quali client connesso ho inviato a.


    AsyncCallback callback = new AsyncCallback(this.MessageSent);
    RequestState state = new RequestState { ConnectionNo = connectionno};
    client.BeginSendMessage(MessageData, callback, state);

Non vedo alcun modo per verificare la presenza di un errore utilizzando il parametro IAsyncResult che viene restituito nel callback.

Quindi la mia domanda è, come posso dire se il messaggio non riesce ad essere inviato?

È stato utile?

Soluzione

Ho trovato la risposta alla mia domanda proprio grazie all'aiuto in questo post c'è un modo per ottenere un feedback di errore su chiamate asincrone WCF :?)

Quando i rendimenti di callback, trovo il collegamento nella mia lista di collegamento di nuovo utilizzando il ConnectionNo ho attraversato nell'oggetto dello stato.

Ho poi chiamo


    try
    {
        //This is the method that is defined in my ServiceContract to complete the AsyncPattern
        client.EndSendMessage(asyncresult);
    }
    catch
    {
        //code here to notify the server that there was an error sending the message
    }

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