Я пытаюсь выяснить лучший способ вызова службы WCF и обработки ошибки или тайм-аута, когда это происходит.Вот что я делаю:
У меня есть интерфейс службы данных, подобный этому:
public interface IDataService
{void GetUserId (string userName, string password, Action getUserIdComplete);}
Я реализую это так:
public class MockDataService : IDataService
{
private Action<string> _getUserIdCompleted;
private SomeServiceClient;
public MockDataService()
{
_proxy = new SomeServiceClient();
}
public void GetUserId(string userName, string password, Action<int> getUserIdComplete)
{
_getUserComplete = getUserIdComplete;
var request = new UserRequest();
request.UserName = userName;
request.Password = password;
//populate any other request info
_proxy.GetUserIdCompleted += new EventHandler<GetUserCompletedEventArgs>(_proxy_GetUserIdCompleted);
_proxy.GetUserIdAsync(request);
}
void _proxy_GetUserIdCompleted(object sender, GetUserIdCompletedEventArgs e)
{
_proxy.GetUserIdCompleted -= new EventHandler<GetUserCompletedEventArgs>(_proxy_GetUserIdCompleted);
_getUserIdComplete(e.UserId);
}
}
Моя проблема в том, что, когда происходит ошибка или время ожидания запроса, приложение завершается.Я мог бы обернуть блок try catch в вызов, но это звучит как плохая идея.
Может кто-нибудь помочь мне элегантно обработать таймауты и ошибки с помощью этого метода?