2013-05-07 2 views
0

Restsharp를 사용하여 Restricted API를 호출하는 중 C#에서 양식을 열 때이 API를 호출하면 Restricted API가 호출되어 잠긴다. 디버그 출력이 첫번째 & 두 번째 호출 사이 어딘가에 걸어 것 같다RestSharp 비동기 API - GUI 업데이트

public void show_members(String url, String api_key, String card_number) 
{ 
    member_numbers.Clear(); 
    st_url = url; 
    st_api_key = api_key; 
    st_card_number = card_number; 

    var client = new RestClient(url); 

    var request = new RestRequest("pendingmembers?api_key={api_key}", Method.GET); 
    request.AddUrlSegment("api_key", api_key); 

    Debug.WriteLine(url + "pendingmembers?api_key=" + api_key); 

    // async with deserialization 
    var asyncHandle = client.ExecuteAsync<PendingMembers>(request, response => 
    { 
     Debug.WriteLine(response.Data.status); 
     if (response.Data.status == "OK") 
     { 
      //Company ID is Correct 
      //Dispatcher.Invoke((Action)() => {cb_MemberList.Items.Clear();}); 
      if (this.InvokeRequired) 
      { 
       this.Invoke((Action)(() => 
       { 
        cb_MemberList.Items.Clear(); 
       })); 
      } 
      else 
      { 
       cb_MemberList.Items.Clear(); 
      } 
      //Debug.WriteLine(response.Data.members); 
      foreach(var member in response.Data.members) 
      { 
       Debug.WriteLine(member.full_name); 
       member_numbers.Add(member.member_id); 
       if (this.InvokeRequired) 
       { 
        this.Invoke((Action)(() => 
        { 
         Debug.WriteLine(member.full_name); 
         cb_MemberList.Items.Add(member.full_name); 
        })); 
       } 
       else 
       { 
        Debug.WriteLine(member.full_name); 
        cb_MemberList.Items.Add(member.full_name); 
       } 
      } 
      Application.DoEvents(); 
     } 
    }); 
} 

답변

0
를 호출 -

그냥

내가 호출과 BeginInvoke 사이에 변경되었지만 운은 ... 내가 잘못하고있는 중이 야 궁금

이 문제가 해결되었습니다. 전체 웹 API 호출을 주석으로 처리하여 여전히 UI가 멈추는 문제를 완벽하게 해결했습니다. 이야기의

문제의 원인이이 window.Show()보다는 window.ShowDialog()했다 확인에

...

도덕적, 더 잠!