2015-07-17 6 views
0

Мне нужно разработать приложение C# с использованием **BackgrounWorker**, но без использования Windows Forms. Я видел несколько примеров, представленных Microsoft относительно использования класса BackgrounWorker, и все они разработаны специально для Windows Forms. Можно ли использовать BackgroundWorker без Windows Forms? если да, пожалуйста, предоставьте несколько деталей. заранее спасибо !Может ли объект BackgroundWorker в C# запускаться без Windows Forms?

+3

BackgroundWorker был предназначен для использования с Windows Forms. События ProgressChanged() и RunWorkerCompleted() автоматически сортируются по основному потоку пользовательского интерфейса, поэтому безопасно взаимодействовать с пользовательским интерфейсом. Если у вас нет пользовательского интерфейса, то зачем использовать BackgroundWorker? ... где возникает необходимость в этом? Существуют и другие варианты, такие как ручное создание [Threads] (https://msdn.microsoft.com/en-us/library/system.threading.thread (v = vs.110) .aspx) или с помощью [Задачи] (https://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v=vs.110).aspx). –

+0

Спасибо за ваш быстрый и проницательный ответ !!! «Необходимость» исходит из того факта, что я унаследовал приложение ** Windows Forms **, которое использует ** BackgroundWorker **, и мне было необходимо, чтобы он подключался к другому приложению в ** asp.net Web-API **. Однако эти две структуры не могут говорить напрямую. Итак, я пытаюсь извлечь код из приложения Windows Forms, чтобы поместить его в ** «чистое» приложение C# **. Каково ваше предложение между двумя вариантами: «Темы и задачи»? – ekremer

+0

Нить - это старый школьный способ сделать это. Если у вас нет веских оснований быть «старой школой», тогда обязательно научитесь использовать Задачи. Тем не менее, см. [Блог SLaks] (http://blog.slaks.net/2013-10-11/threads-vs-tasks/) для более подробной информации о Task vs. ThreadPool. –

ответ

1

В C# есть вы можете использовать Tasks или Threads они оба используются для запуска в фоновом режиме в отделенной контексте выполнения (разделенные потоки)

Это простой пример использования нити

using System.Threading; 

    // creating new thread and pass it the delegate to run it 

    Thread thread = new Thread(new ThreadStart(WorkThreadFunction)); 
    // this command to start the thread 
    thread.Start(); 

    public void WorkThreadFunction() 
    { 

     // do any background work 

    } 
+0

** Привет, Bakri **, спасибо за ваши комментарии и пример! Я думаю, что буду использовать ** Threads **. – ekremer

+0

Добро пожаловать :) –

Смежные вопросы