← Zurück

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

trader.IsAsyncMode = false;

Обработчик trader.NewStopOrders:

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);
	...
}

При выполнении кода:

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

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); и т.д.

War dieses Thema hilfreich?

Thema teilen

Kommentare (0)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Noch keine Kommentare. Seien Sie der Erste!