我正在调试一个 WinForm 控件,它返回 InvokeRequired = true 尽管我在主线程上。控件是否有可能成为非 UI 线程的子级?我认为作为 UI 组件的控件只能是 UI 线程的子级。
问问题
384 次
1 回答
0
是的,有可能该控件是在应用程序 (ui) 线程之外的其他线程上创建的,请参见下面的示例。
var task = Task<Button>.Factory.StartNew(() => {
var button = new Button();
var thisForcesControlToCreateHandle = button.Handle;
return button;
});
var taskResult = task.Result;
var invokeRequired = taskResult.InvokeRequired; // will be True
阅读控制属性 Handle 很重要,它强制创建句柄,请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx表单更多信息。
于 2013-01-11T22:33:13.100 回答