фоновый рабочий поток - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь найти наилучший способ обеспечить отзывчивость моего приложения.Ниже показан код, с которым я сейчас работаю.Что я обнаружил, так это то, что фоновый рабочий поток - это путь.

    private void cleanFiles()
    {
            if (listView1.CheckedItems.Count != 0)
            {

                // If so, loop through all checked files and delete.

                foreach (ListViewItem item in listView1.CheckedItems)
                {

                    string fileName = item.Text;
                    string filePath = Path.Combine(tFile + fileName);

                    try
                    {

                        File.Delete(filePath);
                    }
                    catch (Exception)
                    {
                        //ignore files being in use
                    }

                    MessageBox.Show("Files Cleaned");
                }


            }
            else
            {
                 MessageBox.Show("Please put a check by the files you want to delete");
            }

        }


    }

    }

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

Самый простой способ обеспечить отзывчивость вашей программы - использовать BackgroundWorker.

List<string listWithFilenames = new List<string>();
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync(listWithFilenames);

См. Документацию .

0 голосов
/ 14 апреля 2011

при условии, что опубликованный вами метод работает в контексте потока пользовательского интерфейса, все, что вам нужно сделать, это обернуть логику (часть foreach) в методе вроде:

private void DeleteFiles(object state)
{
/// your logic here
}

и назовите ThreadPool.QueueWorkItem(new WaitCallback(DeleteFiles)); из метода чистых файлов.

если вы используете .NET 4.0, вы можете использовать что-то вроде:

Task myTask = Task.Factory.StartNew( () => DoWork(null)); затем проверьте статус myTask позже, чтобы проверить, выполнено ли оно.

0 голосов
/ 14 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...