この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 17697|答える: 0

[出典] クロススレッド操作が無効:制御「txtresult」が3個...

[リンクをコピー]
掲載地 2015/12/14 15:27:31 | | |

フォーム申請を行う際には、現在のフォームに関する情報を取得したり、他のフォームのコントロールを呼び出す必要があることもあります。

ここではこれを達成するための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     






先の:2桁文字配列の入力は出力時にソートされます
次に:【iOS開発シリーズチュートリアル、夏に公開】iPhoneチュートリアル
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com