C # Как проверить, если событие выполняется асинхронно - PullRequest
0 голосов
/ 14 сентября 2018

Я новичок в событиях и спрашиваю себя, выполняется ли событие, которое запускается (из SDK), в главном потоке или асинхронно в другом.

Может кто-нибудь помочь мне, как это проверить?

Это, например, выполняется, если событие запускается и не блокирует пользовательский интерфейс, что меня удивляет (срабатывание макс. Скорости каждые 0,05 секунды):

void TrackingOnNewTrackingObservations(object sender, TrackingEventArgs e)
    {
        try
        {
            dgvTracking.Rows[0].Cells["cName"].Value = "SlopeDistance";
            dgvTracking.Rows[0].Cells["cValue"].Value = string.Format("{0:0.00} m", e.SlopeDistance);

            dgvTracking.Rows[1].Cells["cName"].Value = "HorizontalAngle";
            dgvTracking.Rows[1].Cells["cValue"].Value = string.Format("{0:0.00000}°", e.HorizontalAngle);

            dgvTracking.Rows[2].Cells["cName"].Value = "VerticalAngle";
            dgvTracking.Rows[2].Cells["cValue"].Value = string.Format("{0:0.00000}°", e.VerticalAngle);
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Error TrackingOnNewTrackingObservations ->" + ex.Message);
        }

1 Ответ

0 голосов
/ 15 сентября 2018

Используйте Corewindow.Dispatcher.HasThreadAccess, чтобы проверить, выполняется ли выполнение в потоке пользовательского интерфейса.

Обычно события будут вызываться в том же потоке, что и вызов метода, который привел к событию.Если класс является классом пользовательского интерфейса, то это будет поток пользовательского интерфейса.

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