|
フォーム申請を行う際には、現在のフォームに関する情報を取得したり、他のフォームのコントロールを呼び出す必要があることもあります。 ここではこれを達成するための2つの方法を紹介します。
フォーム内の他のフォームからコントロールを呼び出す必要がある場合、コントロールを使うことができます。 CheckForIllegaCrossThreadCalls=false; 例えば: Button.CheckForIllegalCrossThreadCalls=false; もちろん、フォーム全体をクロススレッドにすることもできます Form.CheckForIllegalCrossThreadCalls=false; これにより、この形式の制御や性質を他の形態で利用することが可能になります。 これは必ずしも安全とは言えず、デバッグ時にエラーが出ることもあります。
ここではスレッドをまたぐ別の方法を紹介します。 Invokeはフォームスレッドにジャンプしてデリゲートで関数を実行します
まず、委員会を宣言する必要があります。 public delegate void DelSetTime(object str); あとは実行すべき関数を準備するだけです。 public void setTime(object str); これで、代議員をフォームのスレッドに置いて実行できます Delegate d=new DelsetTime(setTime); これ。 Invoke(d, Datetime.Now.ToString()); こうすることでクロススレッドアクセスを実現できます。
各フォームにはフォームスレッドがあり、主に図面の完成とフォームコントロールを担当します このスレッドはフォームスレッドまたはメインスレッドと呼びます。 多くの場合、データを処理するためにフォームにスレッドを追加し、フォームを閉じたときにこれらの新たに作成されたスレッドをバックグラウンドスレッドとして設定できます スレッドも終了します。 ThreadStart ths=new ThreadStart(Demo); スレッド th=新しいスレッド(ths); th。 Start(); th。 IsBackground=true;
オリジナル:http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|