Я пытаюсь выяснить, как заставить пользовательский интерфейс перестать зависать всякий раз, когда я нажимаю кнопку, я хочу, чтобы нажатие кнопки загружало строку, я пробовал асинхронные функции и синхронные функции и добавлял один поток, а затем добавлял два потока, но я не могу понять, как заставить его работать. Это моя последняя попытка, может кто-нибудь объяснить мне, чего мне не хватает? Я использую поток здесь, потому что я читал, что вызов асинхронной функции не обязательно запускает новый поток.
public partial class Form1 : Form
{
private delegate void displayDownloadDelegate(string content);
public Thread downloader, web;
public Form1()
{
InitializeComponent();
}
// Go (Download string from URL) button
private void button1_Click(object sender, EventArgs e)
{
textBox1.Enabled = false;
string url = textBox1.Text;
Thread t = new Thread(() =>
{
using (var client = new WebClient())
{
client.DownloadStringCompleted += (senderi, ei) =>
{
string page = ei.Result;
textBox2.Invoke(new displayDownloadDelegate(displayDownload), page);
};
client.DownloadStringAsync(new Uri(url));
}
});
t.Start();
}
private void displayDownload(string content)
{
textBox2.Text = content;
}