← 返回

Вызов событий в S#. Синхронный или асинхронный?

Михаил, добрый день.

Похожий вопрос я уже задавал раньше. http://stocksharp.com/forum/1160/Bibliotieka-S--vyzyvaiet-sobytiie-ProcessDataError-sinkhronno/

Сейчас осознал, что полной ясности все же у меня нет в этом вопросе.

Задам вопрос на конкретном примере:


void Main()
{
   ...

   Quik.OrdersChanged += Function1;
   Quik.OrdersChanged += Function2;

   ...
}

void Function1(IEnumerable<Order> orders)
{
   Console.Write("A");
   Thread.Sleep(10000);
}

void Function2(IEnumerable<Order> orders)
{   
   Console.Write("B");
}

При наступлении события OrdersChanged на экране "A" и "B" выведутся одновременно или с интервалом в 10 секунд?

本主题对您有帮助吗?

分享主题

评论 (4)

登录创建账户, 登录或注册以发表评论

Mikhail Sukhov
Mikhail Sukhov

Maxim: При наступлении события OrdersChanged на экране "A" и "B" выведутся одновременно или с интервалом в 10 секунд?

С интервалом. К Квику (синхронность и асинхронность) не имеет никакого отношения. Это специфика .NET делегатов.

Maxim
Maxim 作者

Mikhail Sukhov:

Maxim: При наступлении события OrdersChanged на экране "A" и "B" выведутся одновременно или с интервалом в 10 секунд?

С интервалом. К Квику (синхронность и асинхронность) не имеет никакого отношения. Это специфика .NET делегатов.

Все верно. Но делегаты можно вызывать синхронно и асинхронно. Спасибо за ответ.

Mikhail Sukhov
Mikhail Sukhov

Maxim:

Mikhail Sukhov:

Maxim: При наступлении события OrdersChanged на экране "A" и "B" выведутся одновременно или с интервалом в 10 секунд?

С интервалом. К Квику (синхронность и асинхронность) не имеет никакого отношения. Это специфика .NET делегатов.

Все верно. Но делегаты можно вызывать синхронно и асинхронно. Спасибо за ответ.

В данном случае задержка будет и так и так.

Maxim
Maxim 作者

Mikhail Sukhov:

Maxim:

Mikhail Sukhov:

Maxim: При наступлении события OrdersChanged на экране "A" и "B" выведутся одновременно или с интервалом в 10 секунд?

С интервалом. К Квику (синхронность и асинхронность) не имеет никакого отношения. Это специфика .NET делегатов.

Все верно. Но делегаты можно вызывать синхронно и асинхронно. Спасибо за ответ.

В данном случае задержка будет и так и так.

Неа. Если делегаты вызвать одновременно (асинхронно), то "A" и "B" напечатаются тоже одновременно. Пауза стоит после печати в консоль.