silverlight异步变同步

最近,因为异步访问ria的原因,弄的数据混乱,所以在别人的帮忙后,把异步改为了同步,问题慢慢的就解决了。

异步,我的理解是可以同时执行多个ria 服务的函数,并且后面代码同步执行。

同步的步骤是:

1 .安装 Asysc for .net framework 4.0 这个包

   安装完,多了一个page.config 文件,同时引用上了几个task的扩展程序集

2. 扩展task,参考代码

   

public static class OperationExtensions3
    {
        public static Task AsTask(this T operation)
          where T : OperationBase
        {
            TaskCompletionSource tcs =
              new TaskCompletionSource(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 InitMenu(RoleFunction selectRole)
        {
            _menuDomainContext = new MenuDomainServices();
            InvokeOperation> m = await _menuDomainContext.GetList(UserHelperInfo.GetCurrentAuthInfo()).AsTask();
     }


 

你可能感兴趣的:(silverlight)