События в WinForms запускаются асинхронно? - PullRequest
0 голосов
/ 04 июня 2010

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

У меня есть коллекция форм, которые наследуются от общего визуального элемента: MainVisualForm. Этот элемент дает мне возможность узнать, когда форма продвигается назад. Какая форма будет следующей в последовательности, зависит от действий пользователя.

В настоящее время у меня есть этот код для одного такого события, которое я тестирую:

form.OnNextForm += (f, ev) =>
            {
                Parameters.Vehicle = ((VehicleForm)f).SelectedVehicle;
                //FormStack.Push(Parameters.Vehicle == Vehicle.SUV
                //                ? new KeyValuePair<Type, IFormActionBehvaior>(typeof(EntertainmentForm), null)
                //                : new KeyValuePair<Type, IFormActionBehvaior>(typeof(ColorForm), null));
            };

За этим назначением сразу следует ShowDialog (), который блокирует пользователя, пока форма диалога не будет закрыта.

Вопрос в следующем: После закрытия формы .NET ждет завершения EventHandler перед запуском кода, который следует непосредственно за ShowDialog (), или обработчик обрабатывается другим потоком?

Большое спасибо заранее

Ответы [ 3 ]

5 голосов
/ 04 июня 2010

Winforms работает в одном потоке - фактически вы даже не можете получить к нему доступ из второго потока, не столкнувшись с проблемами. Если вы сами не создадите поток (или BackgroundWorker, или что-то еще, что составляет поток), у вас будет только один поток.

2 голосов
/ 04 июня 2010

Ожидает завершения события. События на самом деле являются просто вызовами методов для методов, определенных где-то еще (или делегатами). После всего этого будет запущен следующий бит кода после ShowDialog().

2 голосов
/ 04 июня 2010

В простых .NET Winforms работают в одном потоке.

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