2013-11-15 3 views
0

Я новичок в MS TPL. поэтому я видел некоторое время, когда люди используют TaskScheduler.FromCurrentSynchronizationContext при запуске любой задачи, используя Task.Factory.StartNew(), и некоторое время TaskScheduler не используется, когда люди запускают задачу.Что касается использования TaskScheduler.FromCurrentSynchronizationContext & Task.Factory.StartNew()

var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); 
      Task.Factory.StartNew(() => 
      { 
      }); 

Task.Factory.StartNew(() => 
      { 
      }); 

поэтому, пожалуйста, скажите, пожалуйста, что такое использование TaskScheduler? когда TaskScheduler следует использовать вместе с Task.Factory.StartNew, и когда не следует использовать TaskScheduler.

, пожалуйста, поясните небольшим примером кода, чтобы лучше понять использование TaskScheduler.

другой вопрос, как мы можем планировать такую ​​задачу, когда мы создаем задачу, как я могу указать время, дату или день, когда задача должна быть запущена. спасибо

ответ

2

Если вы хотите, чтобы задание выполнялось в потоке пользовательского интерфейса, используйте uiScheduler в качестве заданного TaskScheduler. Если вы хотите, чтобы задача выполнялась в потоке пула потоков, который является поведением по умолчанию, не указывайте TaskScheduler или укажите TaskScheduler.Default.

+0

спасибо за ответ, но мне нравится знать, какое преимущество будет выполнять любая задача в потоке пользовательского интерфейса? может дать мне два примера кода один для потока пользовательского интерфейса, а другой для пула потоков, используя задачу parallel library.thanks – Mou

+1

@Mou Если у вас есть код, который должен управлять вашим пользовательским интерфейсом, вы запускаете его в потоке пользовательского интерфейса, поэтому он действительно будет работать. Если вам не нужно манипулировать пользовательским интерфейсом и хотите, чтобы пользовательский интерфейс манипулировал собой, пока вы делаете другие вещи, вы не запускаете его в потоке пользовательского интерфейса. Что касается примеров, это буквально вопрос добавления переменной в список параметров по сравнению с ее отсутствием. Я полностью уверен в вашей способности выяснить, как добавить или опустить параметр для вызова метода самостоятельно. Если вам все еще нужны примеры, документы MSDN предоставляют их для каждой перегрузки. – Servy

+0

некоторые, где я читал, что uiScheduler делает процесс медленным ... это правда, потому что я часто видел, что люди не используют uiScheduler при запуске любой задачи. – Mou

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