Обратная связь шаблона службы WCF при неудачной передаче - PullRequest
1 голос
/ 13 августа 2010

Я работаю в Silverlight 4 и внедряю дуплексную службу Polling с асинхронным шаблоном, используемым для обновления клиентов.


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

    void EndSendMessage(IAsyncResult result);

Я делаю обратный вызов клиенту, используя объект RequestState, который я определил, чтобы сохранитьотслеживать, к какому подключенному клиенту я отправил сообщение.


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

Я не вижу способа проверить наличие ошибки с помощью параметра IAsyncResult, который возвращается в обратном вызове.

Итак, мой вопрос: как я могу определить, что сообщение не отправлено?

1 Ответ

0 голосов
/ 13 августа 2010

Я нашел ответ на свой вопрос благодаря помощи в этом посте Есть ли способ получить сообщение об ошибке при асинхронных вызовах WCF? :)

Когда обратный вызов возвращается, я снова нахожу соединение в своем списке соединений, используя ConnectionNo, через который я прошел в объекте состояния.

Я тогда звоню

<code>
    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
    }
...