BackGroundWorkerでのバックグラウンド処理。dotNetプログラミング初心者のための情報を集めました。VB2005の簡単なTips集など、初心者の方の手助けに。>>2008年06月16日BackGroundWorkerでのバックグラウンド処理。(参考コード)BackgroundWorkerを使ったバックグラウンド処理です。編)」では、別スレッドからコントロールを操作する手段をご紹介しました。今回は、それを元にちょっとしたプログラムを作成してみました。内容は、ネットワーク上のコンピュータのホスト名を巡回して検索し、リストボックスに表示させるというものです。バックグラウンド処理のテストとして作ったので、エラー処理などはきちんと施されていません。>>>>>>クリックすれば拡大します。上図のように、ボタンとリストボックスを配置します。BackgroundWorkerコンポーネントも配置します。「Start」ボタンをクリックすると、ネットワークの巡回を開始します。「Cancel」ボタンをクリックすると、スレッド処理を中断します。ネットワークは192.168.10.0/255.255.255.0としています。192.168.10.1から192.168.10.254までを一つ一つ調べ、ホスト名の解決を行います。ホスト名の取得には、System.Net.Dns.GetHostEntryを使用しています。最初にPingにてチェックを行い、PingがNGの場合はホスト名の取得を行わないようにしています。(My.Computer.Network.Ping)BackgroundWorkerでバックグラウンド処理でキャンセルをさせたい場合、キャンセルを受け付けるように指定する必要があります。配置したBackgroundWorkerの「WorkerSupportCancellation」プロパティを「True」に変更します。(デフォルトはFalse)キャンセルを実行するには、BackgroundWorker1.CancelAsync()メソッドを呼び出します。バックグラウンド処理がキャンセルされたかどうかは、DoWorkイベント内で逐一チェックを行います。キャンセルされた場合はBackgroundWorker1.CancellationPendingがTrueになりますので、Trueの場合の処理を実行することで、キャンセルさせることが可能となります。Form1'デリゲートを宣言します。'文字列を受け取るAddListBoxTextというデリゲートとします。String)'リストボックスに文字列を挿入するメソッドです。'リストボックスのInvokeRequiredで、別のスレッドから'アクセスされたかどうかを判断し、Trueである場合とFalse'の場合の処理を記述します。String)'別スレッドからのアクセスかどうかの判断。Then'Invokeでデリゲートを呼び出します。'第1引数にデリゲートを直接記述。Button1.Click'バックグラウンド処理の実行。254'バックグラウンドがキャンセルされたかどうかを確認。If'まずはPingで確認を行う。Then'AddItemメソッドで、リストボックスに値追加。Button2.Click'バックグラウンド処理のキャンセル実行。Class===========================================実行結果は以下の通りです。クリックすれば拡大します。※途中でキャンセルしています。バックグラウンドで巡回し、ホスト名をリストアップしてくれます。IIS(2)VPN(6)ツール(12)日記(18)トラブル対応日記(49)最近のTipsOutlook.comに、メールアカウントを追加しようとするが、2つ目からできない。Windows7でSP1の適用に失敗することがある。複数ユーザー利用の場合、ArcseveD2DのAFD2DMonitor.exeが各ユーザーで起動し、ログファイルが肥大化する。XenSeverにCentOS6.4をGUIインストールする場合。JavaRuntimeの自動アップデートをやめようと設定しても反映されない。Windowsタスクスケジューラにバッチ・スクリプトを登録しても実行しない。グループウェアのデスクネッツをIE8で開くと、ログオンが二つ表示され、ログオンできない。(ユーザーを選択できない。)スクリプトを利用して、メールを送信する。(SmtpAuth)WindowsXPSP3でExcel2007、Excel2010を使っているとき、コピーなどをすると、セルに入力した最初の1文字が変勝手に確定されるXenServer6.0で、WindowsXPSP3のVMを動かしている状態で、XenDesktopを導入すると、VMのXenserverToolsが無効となってしまう。IT@SOHOSeesaaブログ×この広告は180日以上新しい記事の投稿がないブログに表示されております。