0

Dynamics CRM에 Silverlight 4 컨트롤이 있습니다.Silverlight 4 for 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 저장 & 닫기 메서드를 마지막 행으로 넣을 수 있습니다.

+0

내 주요 메소드의 마지막 행입니다. 나는 그것을 얻기 위해 더 많은 시간이 걸리기 위해 몇 가지 시도를했지만 아무 것도 아직 효과가없는 것으로 보인다. –

+0

비동기 메소드가있는 경우 이전에 xrm 메소드를 주 내부의 마지막 행으로 사용하지 않으려면 비동기 호출의 마지막 완료 메소드 내에 있어야합니다. 또한 비동기 호출 체인을 수행 할 수도 있습니다 (예 : 두 번째 비동기라고 부르는 첫 번째 비동기 완료 후 동기 동작을 시뮬레이트). –

+0

방금 ​​시도했으나 양식이 닫히지 않았습니다. OnCreateOpportunityComplete에 중단 점을 넣었고 레코드가 만들어졌지만 아무 것도 맞지 않았습니다. –