Выполнение RegisterOrder в синхронном режиме


Выполнение RegisterOrder в синхронном режиме
Atom
4/26/2012


trader.IsAsyncMode = false;

Обработчик trader.NewStopOrders:
Code
private void trader_NewStopOrders(IEnumerable<Order> stopOrders)
{
	...
	AddLog("New stop orders", true);
	AddLog("thread id: " + Thread.CurrentThread.ManagedThreadId.ToString() + " thread name: " + Thread.CurrentThread.Name, true);
	...
}


При выполнении кода:
Code
private void button1_Click(object sender, EventArgs e)
{
	Order order = CreateStopLimit(1, 151500, 151500, workSecurity, OrderDirections.Sell);
	AddLog("thread id: " + Thread.CurrentThread.ManagedThreadId.ToString() + " thread name: " + Thread.CurrentThread.Name, true);
	AddLog("do: " + order.Id.ToString(), true);
	try
	{	
		trader.RegisterOrder(order);
	}
	catch
	{
	}
	AddLog("posle: " + order.Id.ToString(), true);
}


Лог:
22:40:44:62 thread id: 10 thread name:
22:40:44:62 do: 0
22:40:44:320 New stop orders
22:40:44:322 thread id: 10 thread name:
22:40:44:327 posle: 1395021

Т.е. в trader_NewStopOrders мы попадаем сразу из trader.RegisterOrder(order);

При выполеннии следующего куска кода из метода, вызываемого из обработчика trader.NewMyTrades

Code
AddLog("thread id: " + Thread.CurrentThread.ManagedThreadId.ToString() + " thread name: " + Thread.CurrentThread.Name, true);
AddLog("do: " + order.Id.ToString(), true);
try
{
	trader.RegisterOrder(order);
}
	catch (Exception e)
{
	AddLog("Ошибка: " + e.Message, true);
}
AddLog("posle: " + order.Id.ToString(), true);


Имеем лог:

22:39:09:809 thread id: 23 thread name: EventDispatcher thread #мои сделки
22:39:09:809 do: 0
22:39:10:193 posle: 1395020
22:39:10:193 New stop orders
22:39:10:193 thread id: 23 thread name: EventDispatcher thread #мои сделки

Т.е. в trader_NewStopOrders мы попадаем уже после окончания метода.

Хотелось бы узнать в каких случаях мы сразу попадем в trader_NewStopOrders, а в каких нет, всегда ли они будут выполняться в том же потоке что и trader.RegisterOrder(order); и т.д.

Tags:


Thanks:




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

loading
clippy