投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/5/13 12:41:13
BackgroundWorker を使うのであれば、DoWork イベント内からフォーム上のコントロールを
操作してはいけないという点に注意してください。

> ComboBox1に1~10の数字があります。このComboBox1をBackgroundWorkerに渡したり受け取ったりは
BackgroundWorker から CombBox を受け取るという質問の意図が良く分かりませんが、
渡すべきは「ComboBox1」ではなく、「ComboBox1 から得た 1~10 の数字」のはずです。
ComboBox 上で選択された値を取り出す方法はわかりますか?

---
BackgroundWorker の処理を呼び出す場合、RunWorkerAsync メソッドの引数にてデータを渡せます。

DoWork イベント内では、引数から e.Argument を使って、そのデータを受け取る事ができます。
結果を返却する必要がある場合は、e.Result に結果を書き込んでください。

処理が終わると RunWorkerCompleted イベントが発生します。処理結果を受け取る場合は、
イベントの引数 e.Result から取り出してやれば OK です。


> こんな感じにしたいです
BackgroundWorker を使って待ち合わせるのであれば、たとえば

 Sub Button1_Click(~
  Button1.Enabled = False
  TextBox1.Text = "待機中"
  BackgroundWorker1.RunWorkerAsync(待ち時間)
 End Sub

 Sub BackgroundWorker1_DoWork(~
  Dim millisecondsTimeout As Integer = CInt(e.Argument)
  System.Threading.Thread.Sleep(millisecondsTimeout)
 End Sub

 Sub BackgroundWorker1_RunWorkerCompleted(~
  TextBox1.Text = "終了"
  Button1.Enabled = True
 End Sub

という感じになりますし、Timer を使う場合には、

 Sub Button1_Click(~
  Button1.Enabled = False
  TextBox1.Text = "待機中"
  Timer1.Interval = 待ち時間
  Timer1.Start()
 End Sub

 Sub Timer1_Tick(~
  Timer1.Stop()
  TextBox1.Text = "終了"
  Button1.Enabled = True
 End Sub

という感じですかね。