OSDN Git Service

ShowUserInfoのプロフィール画像の取得処理をBackgroundWorkerからTaskに移行
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 27 Apr 2014 14:54:20 +0000 (23:54 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Tue, 29 Apr 2014 14:06:07 +0000 (23:06 +0900)
OpenTween/ShowUserInfo.Designer.cs
OpenTween/ShowUserInfo.cs
OpenTween/ShowUserInfo.resx

index bade7f9..810a7e2 100644 (file)
@@ -30,7 +30,6 @@
         {
             this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShowUserInfo));
-            this.BackgroundWorkerImageLoader = new System.ComponentModel.BackgroundWorker();
             this.LinkLabel2 = new System.Windows.Forms.LinkLabel();
             this.ButtonBlockDestroy = new System.Windows.Forms.Button();
             this.ButtonReportSpam = new System.Windows.Forms.Button();
             ((System.ComponentModel.ISupportInitialize)(this.UserPicture)).BeginInit();
             this.SuspendLayout();
             // 
-            // BackgroundWorkerImageLoader
-            // 
-            this.BackgroundWorkerImageLoader.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BackgroundWorkerImageLoader_DoWork);
-            this.BackgroundWorkerImageLoader.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BackgroundWorkerImageLoader_RunWorkerCompleted);
-            // 
             // LinkLabel2
             // 
             resources.ApplyResources(this.LinkLabel2, "LinkLabel2");
 
         #endregion
 
-        internal System.ComponentModel.BackgroundWorker BackgroundWorkerImageLoader;
         internal System.Windows.Forms.LinkLabel LinkLabel2;
         internal System.Windows.Forms.Button ButtonBlockDestroy;
         internal System.Windows.Forms.Button ButtonReportSpam;
index 6e4df38..841c198 100644 (file)
@@ -61,7 +61,6 @@ namespace OpenTween
         }
         private TwitterDataModel.User userInfo = null;
         private UserInfo _info = new UserInfo();
-        private Image icondata = null;
         private List<string> atlist = new List<string>();
         private string recentPostTxt;
 
@@ -135,6 +134,20 @@ namespace OpenTween
             return true;
         }
 
+        private async Task SetUserImageAsync(string imageUri)
+        {
+            var oldImage = this.UserPicture.Image;
+            if (oldImage != null)
+            {
+                this.UserPicture.Image = null;
+                oldImage.Dispose();
+            }
+
+            var image = await Task.Run(() => (new HttpVarious()).GetImage(imageUri.Replace("_normal", "_bigger")));
+
+            this.UserPicture.Image = image;
+        }
+
         private async Task SetLinklabelWebAsync(string data)
         {
             string webtext;
@@ -212,9 +225,6 @@ namespace OpenTween
                 return;
             }
 
-            //アイコンロード
-            BackgroundWorkerImageLoader.RunWorkerAsync();
-
             InitPath();
             InitTooltip();
             this.Text = this.Text.Insert(0, _info.ScreenName + " ");
@@ -272,6 +282,7 @@ namespace OpenTween
             await Task.WhenAll(new[]
             {
                 linkTask,
+                this.SetUserImageAsync(_info.ImageUrl.OriginalString),
                 this.LoadFriendshipAsync(_info.ScreenName),
             });
         }
@@ -358,27 +369,11 @@ namespace OpenTween
 
         private void ShowUserInfo_FormClosing(object sender, FormClosingEventArgs e)
         {
-            UserPicture.Image = null;
-            if (icondata != null)
-                icondata.Dispose();
-        }
-
-        private void BackgroundWorkerImageLoader_DoWork(object sender, DoWorkEventArgs e)
-        {
-            string name = _info.ImageUrl.ToString();
-            icondata = (new HttpVarious()).GetImage(name.Replace("_normal", "_bigger"));
-        }
-
-        private void BackgroundWorkerImageLoader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
-        {
-            try
-            {
-                if (icondata != null)
-                    UserPicture.Image = icondata;
-            }
-            catch (Exception)
+            var oldImage = this.UserPicture.Image;
+            if (oldImage != null)
             {
-                UserPicture.Image = null;
+                this.UserPicture.Image = null;
+                oldImage.Dispose();
             }
         }
 
index cb62618..c84f8c4 100644 (file)
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="BackgroundWorkerImageLoader.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
   <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="LinkLabel2.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
   <data name="$this.Text" xml:space="preserve">
     <value> のユーザー情報</value>
   </data>
-  <data name="&gt;&gt;BackgroundWorkerImageLoader.Name" xml:space="preserve">
-    <value>BackgroundWorkerImageLoader</value>
-  </data>
-  <data name="&gt;&gt;BackgroundWorkerImageLoader.Type" xml:space="preserve">
-    <value>System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
   <data name="&gt;&gt;SelectionCopyToolStripMenuItem.Name" xml:space="preserve">
     <value>SelectionCopyToolStripMenuItem</value>
   </data>