System.Net.WebClient.DownloadFileAsync() メソッドを使用して、インターネットからローカル ドライブにファイルをダウンロードしています。Windows環境では問題ありませんが、Monoで試してみると、ダウンロード開始直後に「リクエストがタイムアウトしました」と表示され、ダウンロードに失敗する(ゼロバイトファイル)。
問題が ThreadPool に関連しており、MONO_THREADS_PER_CPU=2000 を設定すると解決するという [1] および [2] を含むインターネット上の記事を見つけました。これまでのところ、私は試しました:
- Win CMD プロンプトで、SET MONO_THREADS_PER_CPU=2000: 解決されていません
- Mono 2.10.8 CMD プロンプトで、SET MONO_THREADS_PER_CPU=2000 が解決されない
- Visual Studio 経由で mono-tools [3] を使用して、MONO_THREADS_PER_CPU=2000 としてプロファイルを作成 (環境変数の設定で): 解決されていません
関連リンク:
- http://www.mono-project.com/Article:ThreadPool_Deadlocks
- http://www.mono-project.com/Mod_mono
- -http://mono-tools.com/Debug.aspx
オペレーティング システム: Win7 x64、Mono バージョン: 2.10.8
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
client.DownloadFile(url, temp);