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 に答える