嗨,目前我正在尝试检查Ria服务是否可用于我们的OOB应用程序。
public static void IsServiceReachable(Action onServiceAvailable, Action onServiceUnavailable)
{
try {
DomainContext context = new DomainContext();
InvokeOperation<bool> invokeOperation = context.IsAlive();
invokeOperation.Completed += (s, arg) => onServiceAvailable();
}
catch (Exception) {
onServiceUnavailable();
}
}
当异常发生时,我的应用程序挂起,现在只是一个白色屏幕。我做得对吗?
我还在应用程序中使用MEF,我很懒地导入我的视图,遗憾的是,当Ria Service无法访问时,MEF不会导入我的观点:(我正在调用CompositionInitializer.SatisfyImports(this)。
[ImportMany(AllowRecomposition = true)]
public Lazy<BaseUserControl, IViewMetadata>[] Views { get; set; }
您是否尝试检查OnServiceAvailable回调中是否发生错误:
void OnServiceAvailable(object sender, EventArgs e)
{
InvokeOperation op = sender as InvokeOperation;
if (op.HasError) {
Exception exception = op.Error;
...
} else {
...
}
}
您可能应该将OnServiceAvailable重命名为类似于OnOperationComplete的名称。
您必须处理回调中的错误,包括"ServiceNotAvailable"错误。请记住,这是一个异步调用——客户端在继续之前不会等待服务器响应。