0

我正在调试一个 WinForm 控件,它返回 InvokeRequired = true 尽管我在主线程上。控件是否有可能成为非 UI 线程的子级?我认为作为 UI 组件的控件只能是 UI 线程的子级。

4

1 回答 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 回答