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

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


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

Tags:


Thanks:


ra81

Avatar
Date: 8/28/2012
Reply


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


SuspendRules();


ResumeRules();

Кажется так.
Thanks:

PavelAd

Avatar
Date: 8/28/2012
Reply


ra81

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


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

Thanks:

Moadip

Avatar
Date: 8/28/2012
Reply


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


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

Code

		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);
			}
		}
Thanks: PavelAd

ra81

Avatar
Date: 8/28/2012
Reply


PavelAd
ra81

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


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



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

PavelAd

Avatar
Date: 9/3/2012
Reply


Использую код:
Code
Rules.Where(rule => rule.SyncToken == syncToken && rule.IsSuspended).ToArray().ForEach(rule => rule.Suspend(false));

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

esper

Avatar
Date: 9/3/2012
Reply


PavelAd
Использую код:
Code
Rules.Where(rule => rule.SyncToken == syncToken && rule.IsSuspended).ToArray().ForEach(rule => rule.Suspend(false));

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


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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy