Silverlight 4等待ASync

时间:2014-01-09 19:11:41

标签: c# silverlight asynchronous silverlight-4.0 dynamics-crm-2011

我的Dynamics CRM中有一个silverlight 4控件。

我可以根据它是否有多个发货日期创建多个商机。用户在机会创建表单的底部有一个简单的表单,其中包含产品信息,日期和收入。这将创建原始副本以及用户在控件中输入的备用信息。

目前,只要用户等待一段时间完成呼叫,它就会创造机会;理想情况下,我希望表单在创建所有新机会后自动关闭。这是相关的代码;任何人都可以帮我解决我需要添加的内容,让CRM等待创建所有内容。

        //OpportunitySet contains all necessary information to create multiple records, 
        //data is valid(it will create information if enough time is given.
        _context.BeginSaveChanges(OnCreateOpportunityComplete, _context.OpportunitySet);
        xrm.Page.data.entity.attributes.get("new_haschildren").setValue(true);
        xrm.Page.data.entity.save("saveandclose");

        private void OnCreateOpportunityComplete(IAsyncResult result)
        {
          try
          {
            _context.EndSaveChanges(result);
            Opportunity createdOpportunity = result.AsyncState as Opportunity;
            //result.AsyncWaitHandle.WaitOne();
            MessagePanel.Children.Add(new TextBlock()
            {
              Text = String.Format("Created a new Opportunity named \"{0}\"\n\twith OpportunityId = \"{1}\".",
                    createdOpportunity.Name, createdOpportunity.OpportunityId)
            });

            BeginRetrieveOpportunity(createdOpportunity.OpportunityId);
            OnRetrieveOpportunityComplete(result);
          }
          catch (SystemException se)
          {
            _syncContext.Send(new SendOrPostCallback(showErrorDetails), se);
          }
        }

真的很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以将xrm save& close方法作为最后一行放在完整方法中执行。