0

我的Dynamics CRM中有一個Silverlight 4控件。Silverlight 4等待ASync

我希望根據它是否有多個發貨日期來創造多個機會。用戶在機會創造表單的底部有一個簡單的表單,其中包含產品信息,日期和收入。這將創建原始副本,並使用用戶在控件中輸入的備用信息。

目前,只要用戶等待一段時間才能完成呼叫,它就會創建機會;理想情況下,我希望表單在創建所有新機會後自動關閉。這裏是相關的代碼;任何人都可以幫助我解決我需要添加的內容,讓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

您可以將xrm save & close方法作爲最後一行在您的完整方法內執行。

+0

這是我主要方法的最後一行;我已經嘗試了一些東西,需要更多時間才能實現,但似乎沒有任何工作。 –

+0

如果你有沒有使用異步方法將xrm方法作爲最後一行放入main中,則必須在異步調用的最後一個完整方法內。你也可以做一系列的異步調用(模擬一個同步行爲,例如完成第一個異步,你調用第二個異步並繼續) –

+0

我剛剛嘗試過,表單從未關閉;我在OnCreateOpportunityComplete中放置了一個斷點,即使創建了記錄也沒有發生任何斷點。 –

相關問題