0

カメラ ストリームを表示するアクティブな x コンポーネントを含むパネルがあります。これは外部コードです。このパネルは、カメラ ドライバーのため、STA スレッドでのみ実行できます。

別のスレッドで作成されたフォームにこのパネルを表示するにはどうすればよいですか? 例えば:

[STAThread]
        public Main()
        {

            Panel display = new Panel();

            Thread form = new Thread(()=>
            {
                Form displayForm = new Form();
                displayForm.Show();
                displayForm.Controls.Add(display);
            });
            form.Start();

            CameraComponent axCamera = new CameraComponent(); //create new camera component active x component
            display.Controls.Add(axCamera);
        }

しかし、これは次の場合に例外をスローしますdisplay.Controls.Add(axCamera); :

4

1 に答える 1

0

その操作を呼び出す必要があります。

Thread form = new Thread(()=>
{
    Form displayForm = new Form();
    displayForm.Show();
    display.Invoke((MethodInvoker)delegate { displayForm.Controls.Add(display); });
});

正直なところ、あなたがそれをしたい理由がわかりません。これは非常にシンプルで高速な操作であり、新しいスレッドを作成するのではなく、UI スレッドで実行する必要があります。

于 2013-06-24T09:08:45.590 に答える