/// <summary>
 /// ProgressChangedだけを共有したBackgroundWorkerを返します。
 /// </summary>
 /// <returns></returns>
 public BackgroundWorker CreateSubBackgroundWorker()
 {
     BackgroundWorker bgw = new BackgroundWorker();
     bgw.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
     return bgw;
 }
 /// <summary>
 /// サブスレッドで指定のメソッドを実行し、終了メソッドを発動させます。(大失敗使うな)
 /// </summary>
 /// <param name="target"></param>
 /// <param name="endTarget"></param>
 public void SubBackgroundWorkerRun(Work target,Work endTarget,BackgroundWorker bgw)
 {
     //            BackgroundWorker bgw = CreateSubBackgroundWorker();
     bgw.DoWork += delegate(object sender,System.ComponentModel.DoWorkEventArgs e)
     {
         target.Invoke();
     };
     bgw.RunWorkerCompleted += delegate(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
     {
         if (endTarget != null)
         {
             endTarget.Invoke();
         }
     };
     bgw.RunWorkerAsync();
 }