目前我正在尝试检查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; }
答案 0 :(得分:0)
您是否尝试检查OnServiceAvailable回调中是否发生错误:
void OnServiceAvailable(object sender, EventArgs e)
{
InvokeOperation op = sender as InvokeOperation;
if (op.HasError) {
Exception exception = op.Error;
...
} else {
...
}
}
你应该重命名OnServiceAvailable,比如OnOperationComplete。
您必须处理回调中的错误 - 包括'ServiceNotAvailable'错误。请记住,这是一个异步调用 - 客户端在继续之前不会等待服务器响应。