В моем приложении много трудоемкого процесса. Поэтому я пытаюсь выполнить эту операцию в отдельном потоке. Даже я смотрел его в отдельном потоке, мой главный пользовательский интерфейс все еще зависает во время продолжительного процесса. Но все же я не мог понять, Причина для этого? Что-то не так в моем коде?Пользовательский интерфейс зависает даже с началом процесса с отдельной нитью?
Мои события Hander Код
private void BtnloadClick(object sender, EventArgs e)
{
if (null != cmbSource.SelectedItem)
{
string selectedITem = ((FeedSource) cmbSource.SelectedItem).Url;
if (!string.IsNullOrEmpty(selectedITem))
{
Thread starter = new Thread(() => BindDataUI(selectedITem));
starter.IsBackground = true;
starter.Start();
}
}
private void BindDataUI(string url)
{
if (feedGridView1.InvokeRequired)
{
BeginInvoke(new Action(() => BindDataGrid(url)));
}
else
BindDataGrid(ss);
}
private void BindDataGrid(string selectedItem)
{
for (int i = 0; i < 10; i++)
{
//Time consuming Process
}
}
Вам нужно разделить BindDataGrid на связанный с UI и не связанный с UI. –
Благодарим за ваши комментарии – Renushi