Я уже внедрил функциональное приложение, которое одновременно анализирует 26 страниц html, чтобы создать xml-файл с данными, содержащимися на веб-страницах.Мне нужно было бы реализовать поток, чтобы этот метод мог работать в фоновом режиме, не заставляя мое приложение казаться не отвечающим.
Во-вторых, у меня есть другая функция, которая отделена от первой, которая сравнивает два xml-файла для созданиятретий, а затем преобразуйте этот третий XML-файл, чтобы создать HTML-страницу, используя XSLT.Это должно быть в потоке, где я могу нажать Отмена, чтобы остановить поток без сбоев приложения.
Какой самый простой способ сделать это с использованием форм WPF в VS 2010?
Я решил использовать BackgroundWorker.
Реализация BackgroundWorker:
public partial class MainWindow : Window
{
private BackgroundWorker bw = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
bw.WorkerReportsProgress = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.LoadFiles();
}
private void btnCompare_Click(object sender, EventArgs e)
{
if (bw.IsBusy != true)
{
progressBar2.IsIndeterminate = true;
// Start the asynchronous operation.
bw.RunWorkerAsync();
}
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
StatsProcessor proc = new StatsProcessor();
if (lstStatsBox1.SelectedItem != null)
if (lstStatsBox2.SelectedItem != null)
proc.CompareStats(lstStatsBox1.SelectedItem.ToString(), lstStatsBox2.SelectedItem.ToString());
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar2.IsIndeterminate = false;
progressBar2.Value = 100;
}
Я начал с решения bgworker, но, похоже, чтометод bw_DoWork никогда не вызывается при щелчке btnCompare, я должен что-то делать не так ... Я новичок в потоках.