public static DialogResult process( IndefiniteProcessor indefiniteProcessor, String titleText, IWin32Window ownerWindow ) { using (IndefiniteProcessingForm indefiniteProcessingForm = new IndefiniteProcessingForm(indefiniteProcessor, titleText)) { return(indefiniteProcessingForm.ShowDialog(ownerWindow)); } }
private IndefiniteProcessingForm(IndefiniteProcessor indefiniteProcessor, String titleText) { this.indefiniteProcessor = indefiniteProcessor; Text = titleText; StartPosition = FormStartPosition.CenterParent; ClientSize = new Size(600, 500); FormBorderStyle = FormBorderStyle.FixedDialog; ShowInTaskbar = false; this.appendControls( logTextBox = new TextBox() { ReadOnly = true, Multiline = true, ScrollBars = ScrollBars.Both, WordWrap = false, Dock = DockStyle.Fill }, progressBar = new ProgressBar() { Step = 1, Dock = DockStyle.Bottom, Style = ProgressBarStyle.Marquee, MarqueeAnimationSpeed = 30 }, new Panel() { Dock = DockStyle.Bottom, Height = 30, Padding = new Padding(4) }.withControls( new Button() { Text = "Stop", Dock = DockStyle.Right, TabIndex = 1 }.withAction(stop) ) ); logTextBoxWriter = new TextBoxWriter(logTextBox); backgroundWorker = new BackgroundWorker() .withCancellationSupport() .withWork <Object, Object, BackgroundWorker>(doWork) .whenCompleted(onBackgroundWorkerRunWorkerCompleted); }