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()之后的代码,或者是由不同的线程处理的处理程序?
首先十分感谢
Winforms在一个线程中运行 - 事实上,你甚至无法从第二个线程访问它而不会遇到麻烦.除非您自己创建一个线程(或者一个BackgroundWorker或构成一个线程的任何其他东西),否则您将只有一个线程.