2013-11-14 2 views
2

У меня около 30 вычислений, которые нужно выполнить на нескольких тысячах точек данных. Расчеты проводятся в сторонней библиотеке. Каждый вызов может выполняться параллельно, поэтому я думал о том, чтобы поместить вызов в несколько потоков.Каков наилучший подход к этой проблеме в C#?

Проблема, которую я получаю, заключается в том, как правильно завершать вызовы, если это необходимо. Так как у меня нет доступа к lib, где большая часть времени есть, я не могу выйти из потока в приятной манере.

Любые предложения?

Спасибо.

+0

Возможно, вам просто придется их убить. –

+0

Зачем прекращать звонки? Если расчет не работает в этот момент, вы ожидаете, что он будет работать, если вы попробуете его позже? – mbeckish

+0

Пользователь может изменить входные данные, поэтому мне нужно его убить. – jbassking

ответ

4

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

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