Использование MarketRuleHelper.SuspendRules при формировании правил в разных методах

Использование MarketRuleHelper.SuspendRules при формировании правил в разных методах
Atom
28.08.2012
PavelAd


Подскажите пожалуйста, как-то можно установить одновременно несколько правил, чтобы каждое из них было активно только тогда, когда завершено формирование всех этих правил при условии что формирование правил делается в разных методах кода. В документации есть пример MarketRuleHelper.SuspendRules(Action), но его использовать можно когда все правила создаются в одном методе.


Теги:


Спасибо:


ra81

Фотография
Дата: 28.08.2012
Ответить


PavelAd: Подскажите пожалуйста, как-то можно установить одновременно несколько правил, чтобы каждое из них было активно только тогда, когда завершено формирование всех этих правил при условии что формирование правил делается в разных методах кода. В документации есть пример MarketRuleHelper.SuspendRules(Action), но его использовать можно когда все правила создаются в одном методе.

SuspendRules();

ResumeRules();

Кажется так.

Спасибо:

PavelAd

Фотография
Дата: 28.08.2012
Ответить


ra81: SuspendRules(); ResumeRules(); Кажется так.

для Strategy - да, но если для Order - такого нет. По разным методам разнесены правила для Order, и запустить одновременно нужно их

Спасибо:

Moadip

Фотография
Дата: 28.08.2012
Ответить


По разным методам разнесены правила для Order, и запустить одновременно нужно их

При создании правила, приостанавливать его. Потом возобновлять работу где надо.


		private Order _order;

		private void Method1()
		{
			_order
				.WhenRegistered()
				.Do(() => { })
				.Suspend(true)
				.Apply();
		}

		private void Method2()
		{
			_order
				.WhenCanceled()
				.Do(() => { })
				.Suspend(true)
				.Apply();
		}

		private void Method3()
		{
			foreach (var rule in Rules.Where(rule => rule.IsSuspended))
			{
				rule.Suspend(false);
			}
		}

Спасибо: PavelAd

ra81

Фотография
Дата: 28.08.2012
Ответить


PavelAd:

ra81: SuspendRules(); ResumeRules(); Кажется так.

для Strategy - да, но если для Order - такого нет. По разным методам разнесены правила для Order, и запустить одновременно нужно их

Ну тогда сразу вопрос надо ставить правильно :).

Спасибо:

PavelAd

Фотография
Дата: 03.09.2012
Ответить


Использую код:

Rules.Where(rule => rule.SyncToken == syncToken && rule.IsSuspended).ToArray().ForEach(rule => rule.Suspend(false));

для возобновления правил - как рекомендовали Не часто, но при каких-то не совсем понятных условиях вылетает исключение, что коллекция была изменена. Я думал объект Rules синхронизированный.

Спасибо:

esper

Фотография
Дата: 03.09.2012
Ответить


PavelAd: Использую код:

Rules.Where(rule => rule.SyncToken == syncToken && rule.IsSuspended).ToArray().ForEach(rule => rule.Suspend(false));

> для возобновления правил - как рекомендовали
> Не часто, но при каких-то не совсем понятных условиях вылетает исключение, что коллекция была изменена.
> Я думал объект Rules синхронизированный.

Поробуйте использовать
```csharp
Rules.SyncGet
Спасибо: PavelAd


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy