【发布时间】:2019-11-08 16:32:04
【问题描述】:
我有一个 winform 应用程序发出 API 请求并将响应写入文本框。这些请求可能需要几分钟才能完成,并防止应用程序在我使用后台线程的每个 API 请求上冻结。但是,我想使用后台工作人员来避免每个表单控件所需的大量委托。如何更改我的代码以改用后台工作人员?
我环顾四周,发现关于后台工作人员的大部分信息都与进度条有关,但我不知道如何使用后台工作人员来完成我正在做的事情。
private delegate void TextBox1WriteDelegate(string i);
private void TextBox1Write(string i)
{
textBox1.Text = i;
}
public void GetApiData()
{
using (HttpClient httpClient = new HttpClient())
{
var response = httpClient.GetAsync("http://apiendpoint.com").Result;
textBox1.Invoke(new TextBox1WriteDelegate(TextBox1Write), response.RequestMessage.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(GetApiData);
t.IsBackground = true;
t.Start();
}
【问题讨论】:
-
你查过Background Worker吗?互联网上有示例(例如在 BW 的文档中)。
标签: c# multithreading winforms backgroundworker