它沒有 IsBusy, WorkComplete 事件等,要自己做,但我覺得比較直觀,貌似對 async 的支援也好點。
- public partial class Form1 : Form
- {
- IProgress<int> _progress;
- public Form1()
- {
- InitializeComponent();
- _progress = new Progress<int>(UpdateProgressBar);
- }
- private void UpdateProgressBar(int val)
- {
- pbProgress.Value = val;
- if (val == 100)
- {
- MessageBox.Show("Finished");
- pbProgress.Value = 0;
- }
- }
- private async void btnStart_Click(object sender, EventArgs e)
- {
- if (pbProgress.Value == 0)
- {
- await Task.Run(async () =>
- {
- for (int i = 0; i < 100; i++)
- {
- _progress.Report(i + 1);
- await Task.Delay(100 - i);
- }
- });
- }
- }
- }
ref: GitHub 範例(Form2是 backgroundworker,可以在 program 切換)
沒有留言:
張貼留言