Как я могу сделать часть кода выполненной в отдельном потоке?

Если у вас возникли проблемы с привязками Specflow, например:

  • шаги не распознаны
  • , привязки не найдены

и перезапуск Visual Studio или восстановление привязок не работает, тогда SpecFlow Устранение неполадок интеграции Visual Studio предлагает различные решения для Visual Studio 2013 и 2015.

9
задан SpaceDog 16 February 2011 в 20:12
поделиться

5 ответов

У вас много здесь есть отличные указатели, но не забудьте потратить некоторое время на Руководство по программированию потоков . Он дает хорошее руководство не только по технологиям, но и по хорошему дизайну параллельной обработки, а также по тому, как лучше использовать цикл выполнения как с потоками, так и вместо потоков.

7
ответ дан 4 December 2019 в 06:00
поделиться

Вы бы сделали

[self performSelectorInBackground:@selector(heavyStuff) withObject:nil];

См. Ссылку на NSObject на сайте Apple.

20
ответ дан 4 December 2019 в 06:00
поделиться

Для «выстрелил и забыл» попробуйте [самостоятельно выполнитьSelectorInBackground: @selector (heavyStuff) withObject: nil] . Если у вас есть несколько таких операций, вы можете проверить NSOperation и его подкласс NSInvocationOperation . NSOperationQueue пул управляемых потоков,

15
ответ дан 4 December 2019 в 06:00
поделиться

Вы можете использовать NSOperationQueue и NSInvocationOperation:

[self myFoo];

NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self                                                                   selector:@selector(heavyStuff) object:nil];
[operationQueue addOperation:operation];

[self myBar];
4
ответ дан 4 December 2019 в 06:00
поделиться

Если вы нацелились исключительно на Snow Leopard, вы можете использовать Grand Central Dispatch:

 [self myFoo];
 dispatch_async(dispatch_get_global_queue(0, 0), ^{
     [self heavyStuff];
     dispatch_async(dispatch_get_main_queue(), ^{
       [self myBar];
     });
 });

Но он не будет работать на более ранних системах (или iPhone) и, вероятно, переборщил.

EDIT: он работает на iPhone с iOS 4.x.

.
7
ответ дан 4 December 2019 в 06:00
поделиться