C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: backgroundworkerにフォルダを渡したい


(過去ログ 84 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■49738 / inTopicNo.1)  backgroundworkerにフォルダを渡したい
  
□投稿者/ lyne (1回)-(2010/05/14(Fri) 17:41:33)

分類:[C#] 

backgroundworkerにフォルダを渡したいのですが、どのようにしたらよいでしょう?
string folder = "";
private void ghost_Click(object sender, EventArgs e){
folder = "c:\tmp";
backgroundWorker.RunWorkerAsync(100);
}

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e){
string[] files = Directory.GetFiles(folder, "*.*");
}

これでよいかと思ったら、なぜか、
string[] files = Directory.GetFiles(folder, "*.*");
の行で、folderが空になってしまっています。
どうしたらよいでしょう?

引用返信 編集キー/
■49739 / inTopicNo.2)  Re[1]: backgroundworkerにフォルダを渡したい
□投稿者/ 魔界の仮面弁士 (1647回)-(2010/05/14(Fri) 18:15:33)
No49738 (lyne さん) に返信
> folder = "c:\tmp";
これだと、「C:{タブ}mp」の意味になってしまいます。

folder = "c:\\tmp";
または
folder = @"c:\tmp";
と記述して下さい。

> backgroundWorker.RunWorkerAsync(100);
この「100」は、何を意味しているのでしょうか?
特に意味が無いのであれば、引数には検索条件となる folder を渡した方が良いでしょう。
(DoWork 内では、それを e.Argument から得るようにする)
引用返信 編集キー/
■49741 / inTopicNo.3)  Re[2]: backgroundworkerにフォルダを渡したい
□投稿者/ lyne (2回)-(2010/05/14(Fri) 18:21:57)
No49739 (魔界の仮面弁士 さん) に返信
いろいろWebを見ていたところ、単に()内に引数を入れれば引数になるらしいので、

string folder = "";
private void ghost_Click(object sender, EventArgs e){
folder = @"c:\tmp";
backgroundWorker.RunWorkerAsync(folder);
}

としてみました。
すると、folderは宣言のfolderと競合しています。
とエラーになりコンパイルできません。
backgroundWorker.RunWorkerAsync(this.(folder);
としてみるとコンパイルできますが、

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e){
string[] files = Directory.GetFiles(folder, "*.*");
}
のほうのfolderは依然として空のままでした。

100ですが、Webページを見てそっくり単に入れてみたので、あまり意味はないです。

backgroundWorker.RunWorkerAsync(folder);
とエラーになりコンパイルできません。

引用返信 編集キー/
■49743 / inTopicNo.4)  Re[3]: backgroundworkerにフォルダを渡したい
□投稿者/ よねKEN (500回)-(2010/05/14(Fri) 21:04:11)
No49741 (lyne さん) に返信
魔界の仮面弁士さんの投稿にある「(DoWork 内では、それを e.Argument から得るようにする)」を実践しましょう。

> private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e){
> string[] files = Directory.GetFiles(folder, "*.*");

string[] files = Directory.GetFiles((string)e.Argument, "*.*");

引用返信 編集キー/
■49744 / inTopicNo.5)  Re[1]: backgroundworkerにフォルダを渡したい
□投稿者/ よねKEN (501回)-(2010/05/14(Fri) 21:19:34)
No49738 (lyne さん) に返信
> backgroundworkerにフォルダを渡したいのですが、どのようにしたらよいでしょう?
> string folder = "";
> private void ghost_Click(object sender, EventArgs e){
> folder = "c:\tmp";
> backgroundWorker.RunWorkerAsync(100);
> }
>
> private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e){
> string[] files = Directory.GetFiles(folder, "*.*");
> }
>
> これでよいかと思ったら、なぜか、
> string[] files = Directory.GetFiles(folder, "*.*");
> の行で、folderが空になってしまっています。
> どうしたらよいでしょう?

提示の情報から同等と思われるコードを書いてみましたが、folderは空になりませんよ。
変数folderを空にしてしまっている処理があるか、あるいは、確認方法が間違っていませんか?

※この投稿は、この方法をお勧めする意図はなく、あくまで何か勘違いがある可能性が高いので、
 その点を指摘する目的のみで書いています。
 実際のデータの受け渡しは、e.Argumentを使う方法で実現してください。
引用返信 編集キー/
■49755 / inTopicNo.6)  Re[3]: backgroundworkerにフォルダを渡したい
□投稿者/ nori (106回)-(2010/05/15(Sat) 05:59:25)
> string folder = "";
> private void ghost_Click(object sender, EventArgs e){
> folder = @"c:\tmp";
> backgroundWorker.RunWorkerAsync(folder);
> }
>
> としてみました。
> すると、folderは宣言のfolderと競合しています。
> とエラーになりコンパイルできません。
掲示のソースではエラーになりません。
引用返信 編集キー/
■49765 / inTopicNo.7)  Re[4]: backgroundworkerにフォルダを渡したい
□投稿者/ ヴァン (73回)-(2010/05/16(Sun) 10:16:36)
No49755 (nori さん) に返信
>>string folder = "";
>>private void ghost_Click(object sender, EventArgs e){
>>folder = @"c:\tmp";
>>backgroundWorker.RunWorkerAsync(folder);
>>}
>>
>>としてみました。
>>すると、folderは宣言のfolderと競合しています。
>>とエラーになりコンパイルできません。
> 掲示のソースではエラーになりません。

何処かに別な folder があるんじゃないですか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -