我想找出调用WCF服务并处理错误或超时时的最佳方法。下面是我在做什么:正确的错误处理WCF服务调用
我有一个这样的数据服务接口:
public interface IDataService
{ 无效GetUserId(用户名字符串,字符串密码,操作getUserIdComplete); }
我实现它是这样的:
public class MockDataService : IDataService
{
private Action<string> _getUserIdCompleted;
privaet 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);
}
}
我的问题是,当错误发生或请求timesout,我弹的应用。我可以围绕这个调用包装一个try catch块,但这听起来像个坏主意。有人可以帮助我用这种方法优雅地处理超时和错误吗?谢谢!
哇,我很喜欢这个!感谢您的建议。我会试试这个。我没有看到太多好的异步模式,但我确实喜欢这个。 – adminJaxon 2010-11-17 17:07:31