0

ポップアップ ウィンドウを作成する必要があるスレッドがあります。ThreadPool.QueueUserWorkItem(new WaitCallback(CreatePopupinThread)) を使用してスレッドを開始します。スレッドは新しいフォームを作成します。アプリケーションは、CreateHandle の新しい Form コンストラクターでフリーズします。ワーカー スレッドがロックされています...どうすれば修正できますか?

これが私がフォームを作成する方法です

var form = new ConfirmationForm
                           {
                               Text = entry.Caption,
                               Label = entry.Text,
                           };

コンストラクターでスレッドがデッドロックに入る

public ConfirmationForm()
        {
            InitializeComponent();
        }
4

2 に答える 2

0

私は問題を修正しました...フォームアクティブ化イベントでトレッドスタートが行われたため、デッドロックがトリガーされました...それをShownイベントに移動したところ、正常に動作しました...

于 2010-04-27T07:45:10.777 に答える
0

UIスレッドで「ポップアップウィンドウ」を作成し、「ポップアップウィンドウ」にスレッドを作成して、やりたいことを処理する方が良いと思います。

私が疑ったように、UI 以外のスレッドで作成されたフォームを表示することはできません。
この回答を参照してください:バックグラウンド スレッドでフォームを作成し、UI スレッドで表示することが可能

于 2010-04-27T07:21:54.817 に答える