【问题标题】:RestSharp Async API - Updating GUIRestSharp Async API - 更新 GUI
【发布时间】:2013-05-07 21:47:15
【问题描述】:

我在打开表单时使用 C# 中的 RestSharp 调用 Restful API,但是在调用它时 GUI 会打开并锁定。

只是想知道我做错了什么......

我在 Invoke 和 BeginInvoke 之间进行了更改,但没有运气 - 调试输出似乎在第一次和第二次 Invoke 调用之间挂起

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();
        }
    });
}

【问题讨论】:

    标签: c# restsharp


    【解决方案1】:

    修复了这个问题 - 在注释掉整个 Web API 调用仍然导致 UI 挂起时运行良好。

    检查是 window.Show() 而不是 window.ShowDialog() 导致问题...

    故事的寓意,更多的睡眠!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2014-03-13
      • 2014-12-20
      • 2016-11-15
      • 1970-01-01
      • 2015-09-17
      • 2014-08-31
      相关资源
      最近更新 更多