OSDN Git Service

TweetThumbnail内でHttpClientインスタンスを保持する
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 16 Jun 2014 05:25:12 +0000 (14:25 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 16 Jun 2014 16:04:37 +0000 (01:04 +0900)
サムネイル表示の度に HttpClient を生成していた負担を軽減させる

OpenTween/Thumbnail/ThumbnailInfo.cs
OpenTween/TweetThumbnail.cs

index b16ab98..67090aa 100644 (file)
@@ -41,13 +41,16 @@ namespace OpenTween.Thumbnail
             return this.LoadThumbnailImageAsync(CancellationToken.None);
         }
 
-        public async Task<MemoryImage> LoadThumbnailImageAsync(CancellationToken cancellationToken)
+        public Task<MemoryImage> LoadThumbnailImageAsync(CancellationToken cancellationToken)
         {
-            using (var http = MyCommon.CreateHttpClient())
+            return Task.Run(async () =>
             {
-                return await this.LoadThumbnailImageAsync(http, cancellationToken)
-                    .ConfigureAwait(false);
-            }
+                using (var http = MyCommon.CreateHttpClient())
+                {
+                    return await this.LoadThumbnailImageAsync(http, cancellationToken)
+                        .ConfigureAwait(false);
+                }
+            }, cancellationToken);
         }
 
         public async virtual Task<MemoryImage> LoadThumbnailImageAsync(HttpClient http, CancellationToken cancellationToken)
index b784fc4..7e0e5b2 100644 (file)
@@ -44,6 +44,8 @@ namespace OpenTween
         public event EventHandler<ThumbnailDoubleClickEventArgs> ThumbnailDoubleClick;
         public event EventHandler<ThumbnailImageSearchEventArgs> ThumbnailImageSearchClick;
 
+        private readonly HttpClient http = MyCommon.CreateHttpClient();
+
         private object uiLockObj = new object();
 
         public ThumbnailInfo Thumbnail
@@ -85,7 +87,7 @@ namespace OpenTween
                     picbox.Tag = thumb;
                     picbox.ContextMenuStrip = this.contextMenuStrip;
 
-                    var loadTask = picbox.SetImageFromTask(() => thumb.LoadThumbnailImageAsync(cancelToken));
+                    var loadTask = picbox.SetImageFromTask(() => thumb.LoadThumbnailImageAsync(this.http, cancelToken));
                     loadTasks.Add(loadTask);
 
                     var tooltipText = thumb.TooltipText;