最近,因为异步访问ria的原因,弄的数据混乱,所以在别人的帮忙后,把异步改为了同步,问题慢慢的就解决了。
异步,我的理解是可以同时执行多个ria 服务的函数,并且后面代码同步执行。
同步的步骤是:
1 .安装 Asysc for .net framework 4.0 这个包
安装完,多了一个page.config 文件,同时引用上了几个task的扩展程序集
2. 扩展task,参考代码
public static class OperationExtensions3
{
public static Task<T> AsTask<T>(this T operation)
where T : OperationBase
{
TaskCompletionSource<T> tcs =
new TaskCompletionSource<T>(operation.UserState);
operation.Completed += (sender, e) =>
{
if (operation.HasError && !operation.IsErrorHandled)
{
tcs.TrySetException(operation.Error);
operation.MarkErrorAsHandled();
}
else if (operation.IsCanceled)
{
tcs.TrySetCanceled();
}
else
{
tcs.TrySetResult(operation);
}
};
return tcs.Task;
}
}
3.调用方法
private async Task<bool> InitMenu(RoleFunction selectRole)
{
_menuDomainContext = new MenuDomainServices();
InvokeOperation<List<Menu>> m = await _menuDomainContext.GetList(UserHelperInfo.GetCurrentAuthInfo()).AsTask();
}