Windows Mobileは通信を2スレッド位でしようとしたら落ちた記憶があるので、画像のダウンロード部分はロックをかけて排他的に処理させます。
pixivとかよくタイムアウトを返してくるサーバーがまぁまぁいるので、TimeOut例外が発生しても適当にリトライする様にしました。
object lockItem = new object(); private void DownloadProc() { Bitmap bmp = null; bool isSuccess = false; lock (lockItem) { for (int i = 0; i < this.RetryCount; i++) { try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Info.PictureUrl); using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { bmp = new Bitmap(res.GetResponseStream()); } isSuccess = true; } catch (WebException e) { if (e.Status != WebExceptionStatus.Timeout) { throw e; } } if (isSuccess) { Info.Image = bmp; break; } System.Threading.Thread.Sleep(500); } this.OnDownloadComplate(bmp); } }
ダウンロードが完了したらOnDownloadComplateメソッドにBitmapを渡しています。使わないけど……