2

独自のバックグラウンドワーカースレッドを持つC#ユーザーコントロールがあります。このワーカースレッドは、コントロールのコンストラクターで開始され、コントロールが破棄されると停止します。

スレッドはデリゲートを使用してBeginInvoke-Methodを定期的に呼び出しますが、 「ウィンドウハンドルが作成されるまで、コントロールでInvokeまたはBeginInvokeを呼び出すことはできません」という例外が発生する場合があります。発生します。

ここで、コントロールが完全に作成されていない限り、ワーカースレッドからBeginInvokeを呼び出して呼び出しを行わないようにできるかどうかを確認するにはどうすればよいですか?

この問題は、リリースをコンパイルするときにのみ発生します。デバッグモードではありません。

敬具

4

1 に答える 1

4

ワーカースレッドは内部に作成する必要があります...(2つのオプションがあります):

  1. Control.HandleCreatedイベントのハンドラー
  2. Control.OnHandleCreatedをオーバーライドする

知っておく必要があるのは、コンストラクターの実行が完了した後でも、コントロールが完全に作成されていない(使用できる状態になっていない)可能性があることです。

于 2010-01-12T17:05:19.200 に答える