複数のUserStateをBackgroundWorker.ReportProgressとともに送信するにはどうすればよいですか?例えばBackgroundWorker.ReportProgressを使用して複数のUserStateを送信する方法WPF
:
progressbar.Value = e.UserState as double;
この1は、この1つは
あなたは進歩を渡すことができ、あなたに
複数のUserStateをBackgroundWorker.ReportProgressとともに送信するにはどうすればよいですか?例えばBackgroundWorker.ReportProgressを使用して複数のUserStateを送信する方法WPF
:
progressbar.Value = e.UserState as double;
この1は、この1つは
あなたは進歩を渡すことができ、あなたに
ありがとうラベルのためになりProgessBar
lblpercent.Content = e.UserState as string;
のためになります引数:引数:
worker.ReportProgress(55,"test");
progressbar.Value = e.PercentProgress/100.0 * progressbar.MaxValue;
lblpercent.Content = e.UserState.ToString();
それともuserState
class MyUserState
{
public double Value {get;set;}
public string Content {get;set;}
}
worker.ReportProgress(55,new MyUserState { Value = 23.7, Content = "Working ..."});
MyUserState state = e.UserState as MyUserState;
progressbar.Value = state.Value;
lblpercent.Content = state.Content;
経由クラス/構造体を渡す私はbackgroundWorker1_DoWork
に次のように行った:私は入れ
string [] workerResult = new string[3];
workerResult[0] = total.ToString();
orkerResult[1] = "Files Copied: " + i + "/" + filecount;
workerResult[2] = "Size Copied: " + totalmb + "/" + totalsize + " MB";
とbackgroundWorker1_ProgressChanged
へ:
string[] results = (string[])e.UserState;
progressbar.Value = double.Parse(results[0]);
lblcopiedfiles.Content = results[1];
lblsizecopied.Content = results[2];
に感謝あなたの助けを借りて
これも機能しますが、これは以前の回答よりも実際には優れていますか?また、ニックピッキング、文字列の書式設定などは、Gui(_ProgressChanged)のタスクであり、DoWorkのタスクではありません。 –