После нажатия кнопки поток отключает доступ к программе, я не могу даже выйти из программы.Что мне делать. в listView1 должны пробежаться строки a, b, c, d и при этом я должен делать что либо с с основной формой. Например набирать текст в textbox. Как синхронизировать работу потока и основной программы, чтобы они не мешали друг другу.
private void Button1_Click(object sender, EventArgs e)
{
Thread childThread = new Thread(getlistAsync);
childThread.Start();
}
private void getlistAsync()
{
while (true)
{
add("a", "b", "c", "d");
}
}
public async Task add(string prob, string reg, string data, string user)
{
String[] row = { prob, reg, data, user };
ListViewItem item = new ListViewItem(row);
this.listView1.BeginInvoke(
new Action(() =>
{
listView1.Items.Add(item);
listView1.Refresh();
}));
}
private void Form1_Shown(object sender, EventArgs e)
{
listView1.Columns.Add("Problems", 80);
listView1.Columns.Add("Data", 120);
listView1.Columns.Add("Registry Key", 130);
listView1.Columns.Add("users", 80);
}
От того, что вы убрали в отдельный поток заполнение контрола, никакой пользы не будет, т.к. ваш бесконечный цикл будет постоянно дергать UI-поток, чтобы обновить отображение контрола, что собственно и приводит к ожидаемому зависанию, да еще и накладным расходам на межпоточное взаимодействие.
Можете провести эксперимент и убедиться в этом, добавив в ваш цикл, который бежит в отдельном потоке Thread.Sleep(1000)
.
Не знаю какую реальную задачу вы пытаетесь решить таким способом, но в отдельный поток стоит стоит выносить операции, которые выполняются долго и не дергают UI-постоянно.
Из того, что я вижу - это WinForms, а там все трудозатратные задачи требуется выполнять в фоновом потоке, BackgroundWorker. Обратите внимание на эту статью
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В C# в структурах запрещено использовать конструктор без параметров, так как он используется для инициализации членов структуры (обнуления...
Для проекта на netcore 22 понадобилось использовать библиотеку скомпилированную под X86 NetFramework 4
В товаре предусмотрено 3 цены, в зависимости от размераВозле каждой цены кнопка "в корзину"
Вот код, не пойму где не закрыл тег