WinForms中的事件是异步触发的吗?

xxi*_*nxx 0 c# concurrency events multithreading winforms

我知道这可能是一个重复的帖子,但我想确保我清楚地问这个问题并根据我的措辞得到答案.

我有一个从常见的可视元素继承的表单集合: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));
            };
Run Code Online (Sandbox Code Playgroud)

此分配紧接着是ShowDialog(),它会阻止用户,直到Dialog表单关闭.

问题是:表单关闭后.NET是否等待EventHandler完成,然后运行直接跟在ShowDialog()之后的代码,或者是由不同的线程处理的处理程序?

首先十分感谢

Mat*_*nen 5

Winforms在一个线程中运行 - 事实上,你甚至无法从第二个线程访问它而不会遇到麻烦.除非您自己创建一个线程(或者一个BackgroundWorker或构成一个线程的任何其他东西),否则您将只有一个线程.