投稿者 HAL  (社会人) 投稿日時 2009/2/21 09:41:54
魔界の仮面弁士様、再度、ご指導大変有難う御座います。

さて、そうなると実は他のサイトでも類似した質問をさせて頂いたのですが、
例としてform_mainに、text1(ここにaaa.wavのフルパス)、
combo1(MP3変換の為のビットレート)、combo2(同、チャンネル)、
combo3(同、サンプリングレート)、button1(変換)、button2(キャンセル)を配置し、
button1(変換)クリック時に保存先ディレクトリダイアログ表示後、
lame.exeを実行しエンコードと言う処理がしたいとします。

その際、仮に直でこのfrom_mainのbutton1_clickイベント時にlame.exeをshellなり、
process.startで実行させた際、form_mainは操作不能となり、
button2(キャンセル)はクリックできずに変換処理の強制終了は出来ませんでした。

となると、非同期でlame.exeを実行させることを考えました。
そうするとcombo1-3のデータは必要となります。

>DoWork 内では、「イベント引数」と「イベント内のローカル変数」以外の変数は、
 原則として使用禁止と思ってください。
とおっしゃいましたが、
ソース上システムに影響のないもので原則として使用禁止というのが分かりません。
何をもって原則として使用禁止なんでしょうか?

また、ご指導でおっしゃっている事を考えるとこの上記の例の場合で、
_DoWorkでなく且つcombo1-3の値を引き継ぐ方法があるのだと受け取れました。

因みに上記の例はキャンセルクリック不可で動作確認済みで、結果aaa.wav→aaa.mp3に変換できましたし、_DoWork内でもキャンセルクリック可能/lame.exe プロセス強制終了OKで同結果で変換できました。
となると、やはり原則として使用禁止が気になります…。

何卒、VB2008若輩者にご指導お願い致します。