【发布时间】:2010-11-16 21:55:14
【问题描述】:
我很想找出最好的方法来调用 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 块,但这听起来是个坏主意。
有人可以帮我用这种方法优雅地处理超时和错误吗?
【问题讨论】:
标签: c# silverlight wcf design-patterns