• ベストアンサー

backgroundWorkerに無視される。。。

C#のbackgroundWorkerがうまく動いてくれません。あるページを丸コピーしているのですが・・・(VC#2010ex、WINフォームアプリで作成を使用です) http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html こちらのページを丸ごと参考にしているのですがなぜかうんともすんとも言いません・・・ どなたか原因をご教示いただけませんでしょうか? 各コントロールのプロパティも名称を合わせました。 WorkerReportsProgressプロパティをtrueに設定にもしております。 あとは、ボタンをダブルクリックしてソースの編集画面を開き丸ごとソースをコピーしました。 それでビルドしてみたのですが・・・全く動きません(T_T;)案内通りにしたのですが ちなみにダウンロードしたやつをVS2005でやってみたところちゃんと動きました。 おそらく何か足りていないかと思うのですが、まったくエラーにもならないのでどうしたらいいか初心者にはわかりません。 ご解説いただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

イベントハンドラの設定をしてないからだと思いますよ C#の場合ハンドラの追加をIDE上でしてやると Form1.Designer.csファイルの中の InitializeComponent()の中で buttonStart.Click += new Evenhandler( this.startButton_Click ); などが記述されます お示しのURLのコードは Form1.csに記述する内容だけなので このコードをいつ実行するのかを決めていません startButtonのClickイベント => startButton_Click bgWokerのDoWorkイベント => bgWoker_DoWork bgWokerのProgressChangedイベント => bgWoker_ProgressChanged bgWokerのRunWorkerCompletedイベント => bgWoker_RunWorkerCompleted を結び付けましょう コードを入力してあるならば 1) フォームのデザイナー画面でボタンやbgWokerなどのコントロールを選択する 2) プロパティウィンドウの雷マークをクリックしてイベント選択に変更 3) ClickやDoWorkなどの行の右側の列をクリックして ドロップボタンを押す 4) startButton_ClickやbgWoker_DoWorkなど適切なイベントを選択 5) 1)に戻ってすべてのハンドラを設定する といった具合にして見ましょう コードが入力されていない場合は 3)の段階でダブルクリックするとハンドラのスケルトンが生成されます

mr-r00
質問者

お礼

わかり易い解説ありがとうございます。 おかげさまで理解することが出来ました。

その他の回答 (1)

回答No.1

イベントハンドラをちゃんと関連付けていますか。 何も起こらない,というのはその可能性が一番高いように感じますが。

mr-r00
質問者

お礼

ありがとうございます。