[過去ログ] ふらっと C#,C♯,C#(初心者用) Part141 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
418(6): 2020/05/07(木)08:09 ID:uSRgeDXp(1/11) AAS
なぜ?は正常にダウンロードできないのか教えて下さい
よろしくお願いします
?aaa.csvが作成されるのですが0 byteの空のcsvです
var url1 = new Uri("外部リンク:tekitou
var csv1 = "aaa.csv";
var wc1 = new WebClient();
wc1.DownloadFileAsync(url1, csv1);
?これは正常にダウンロードできます
var url2 = "外部リンク:tekitou
var csv2 = "bbb.csv";
省11
420: 2020/05/07(木)08:32 ID:uSRgeDXp(2/11) AAS
>>419
はい!非同期にファイルをダウンロードするメソッドです!
425: 2020/05/07(木)09:12 ID:uSRgeDXp(3/11) AAS
>>421
正直に言うとよく分かりません!
目的はwindowsフォームで作ったアプリで使う事です。
具体的には、DownloadFileCompletedイベントを使い、
ダウンロード完了を待ってCSVファイルにアクセスしたいと思いました
実はこれは成功しています。
コンソールアプリでも同様のことができないかとチャレンジしてみたのですがこの通りダメでした。
「非同期」について根本的なことが理解できていないと指摘されているのだと思ってます。
もう少し調べてみます!
426: 2020/05/07(木)09:13 ID:uSRgeDXp(4/11) AAS
>>422
windowsフォームアプリで使っているので、それを参考に同じように書いてみましたがやはり空のファイルしかダウンロードできません!
static void Main(string[] args)
{
var url1 = new Uri("外部リンク:tekitou
var csv1 = "aaa.csv";
WebClient wc1 = new WebClient();
wc1.DownloadFileCompleted += Wc1_DownloadFileCompleted;
wc1.DownloadFileAsync(url1, csv1);
}
省4
427: 2020/05/07(木)09:17 ID:uSRgeDXp(5/11) AAS
>>424
visualstudioのF11を使って走らせると一応最後まで行くのが確認できます!
なぜでしょう
428: 2020/05/07(木)09:18 ID:uSRgeDXp(6/11) AAS
>>423
そちらも当たってみることにします
ありがとうございます
430(1): 2020/05/07(木)10:52 ID:uSRgeDXp(7/11) AAS
>>429
へとへとになりましたがいけました・・・・
一応報告です
async voidはダメだという記述をどこかでみました(ぐぐりまくった結果ソースがどこかわからない)
async Task MainでいけるということですがC#7.1を有効にするためごにょごにょしました
awaitをつけたところ戻り値voidのメソッドはだめだと怒られたのでDownloadFileTaskAsyncに変えてみました
static async Task Main(string[] args)
{
var url1 = "外部リンク:tekitou
var csv1 = "aaa.csv";
省5
432(3): 2020/05/07(木)11:08 ID:uSRgeDXp(8/11) AAS
>>431
ありがとうございました。
ダウンロード終了を待たないとそりゃ中身0バイトでしょの一言が貴重でした
ちなみにですが、
外部リンク[html]:dobon.net
「.NET Framework 2.0以降で、非同期的にファイルをダウンロードし保存する」
で紹介されているC#のコードですが、ここではawaitが出てこない
その理由は、
コンソールアプリと違ってフォームを表示しているメインのスレッドは勝手に終了しないから
という理解でよいでしょうか?
省2
433: 2020/05/07(木)11:15 ID:uSRgeDXp(9/11) AAS
>>418の?でうまくいったのは、
たまたま非同期が前、同期が後の順番だったため、同期が終わるまでプログラム全体が終了せず
その間に非同期のほうも無事にダウンロードできたという事で・・・?
サーバー側の都合で同時に同じファイルのダウンロードは認められず、先に要求のあった非同期が終わるまで同期のほうが始まらなかったとか
437(2): 2020/05/07(木)13:46 ID:uSRgeDXp(10/11) AAS
>>435
一番知りたいのはフォームアプリとコンソールアプリでなぜこのような違いがでるのかっていう点ですね
それについては>>432の理解でよいのでしょうか
前半は肯定してもらったのですが、後半はどうでしょうか
>DownloadFileAsyncはイベントベースで完了を待つ(ことができる)もの
DownloadFileTaskAsyncでもcompletedイベントハンドラが動きました
とここまで書いて一発で疑問を解決してくれるコードを発見です
static void Main(string[] args)
{
var url1 = new Uri("外部リンク:tekitou
省12
442: 2020/05/07(木)15:03 ID:uSRgeDXp(11/11) AAS
>>438-440
大変ありがとうございます
しっかりと調べた方がよさそうなキーワードが盛りだくさんです
今から出かけるので帰ってから取りかかろうと思います
まだまだ奥が深そうですね!
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.153s*