Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Форма зависает при выполнении кода в потоке

Всем привет. Мне нужно брать путь к файлу из массива и копировать его в новое место, реализовываю все в потоке, но прога все равно зависает на время выполнения задачи. И да, если это вообще играет какую либо роль - пишу на WPF. Код:

void copy()
        {
            this.Dispatcher.Invoke(() =>
            {
                for (int i = 0; i < itemslist.Length; i++)
                {
                    if (File.Exists(itemslist[i]))
                    {
                        string fileName = System.IO.Path.GetFileName(itemslist[i]);
                        File.Copy(itemslist[i], EditDir.Text + "/" + fileName);
                    }
                    if (Directory.Exists(itemslist[i]))
                    {
                        CopyDirs(itemslist[i], EditDir.Text);
                    }                   
                }
            });                 
        }

private void copyBtn_Click(object sender, RoutedEventArgs e)
        {
                new Thread(() => { copy(); }).Start();
        }




 

Приветствую снова, Алексей 🖐
В данном случае намного лучше делать в асинхронном потоке (задаче).

async void copyBtn_Click(object sender, RoutedEventArgs e)
{
    await Task.Run(() => copy());
}

 

Удаленный пользователь отреагировал на эту запись.
Удаленный пользователь

блин, на Win forms работает , на WPF - нет, ну и на этом спасибо. Буду гуглить дальше.

Как это не работает?