Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private delegate void DoUIStuffDelegate(Thing1 arg1, Thing2 arg2);
- private void doUIStuff(Thing1 arg1, Thing2 arg2)
- {
- control1.Visible = false;
- this.Controls.Add(arg1.ToButton());
- ...
- control100.Text = arg2.ToString();
- }
- ...
- private void backgroundThread()
- {
- Thing1 arg1 = new Thing1();
- Thing2 arg2 = new Thing2();
- this.Invoke(new DoUIStuffDelegate(doUIStuff), arg1, arg2);
- }
- Thread uiStuffThread = null;
- public void OnEventFired()
- {
- if (uiStuffThread != null)
- uiStuffThread.Abort();
- uiStuffThread = new Thread(backgroundThread);
- uiStuffThread.Start();
- }
- private delegate void DoUIStuffLine1Delegate();
- private delegate void DoUIStuffLine2Delegate(Thing1 arg1);
- ...
- private delegate void DoUIStuffLine100Delegate(Thing2 arg2);
- private void doUIStuffLine1()
- {
- control1.Visible = false;
- }
- private void doUIStuffLine2()
- {
- this.Controls.Add(arg1.ToButton());
- }
- ...
- private void doUIStuffLine100(Thing2 arg2)
- {
- control100.Text = arg2.ToString();
- }
- ...
- private void backgroundThread()
- {
- Thing1 arg1 = new Thing1();
- Thing2 arg2 = new Thing2();
- this.Invoke(new DoUIStuffLine1Delegate(doUIStuffLine1));
- this.Invoke(new DoUIStuffLine2Delegate(doUIStuffLine2), arg1);
- ...
- this.Invoke(new DoUIStuffLine100Delegate(doUIStuffLine100), arg2);
- }
- Thread uiStuffThread = null;
- public void OnEventFired()
- {
- if (uiStuffThread != null)
- uiStuffThread.Abort();
- uiStuffThread = new Thread(backgroundThread);
- uiStuffThread.Start();
- }
- private void doUIStuff()
- {
- Thing1 arg1 = new Thing1();
- Thing2 arg2 = new Thing2();
- control1.Visible = false;
- this.Controls.Add(arg1.ToButton());
- ...
- control100.Text = arg2.ToString();
- }
- Thread uiStuffThread = null;
- public void OnEventFired()
- {
- if (uiStuffThread != null)
- uiStuffThread.Abort();
- uiStuffThread = this.GetNiceThread(doUIStuff);
- uiStuffThread.Start();
- }
- void worker_DoWork(object sender, DoWorkEventArgs e)
- {
- try {
- Action<Action> update = thingToDo =>
- {
- if (worker.CancellationPending) throw new SomeException();
- this.Invoke(thingToDo);
- };
- //...
- string tmp = "abc"; // long running
- update(() => this.Text = tmp);
- tmp = "def"; // long running
- update(() => textbox1.Text = tmp);
- } catch (SomeException) {
- e.Cancel = true;
- }
- }
- private Thread workerThread;
- private AsyncOperation operation;
- public event EventHandler SomethingHappened;
- public MySynchronizedClass()
- {
- operation = AsyncOperationManager.CreateOperation(null);
- workerThread = new Thread(new ThreadStart(DoWork));
- workerThread.Start();
- }
- private void DoWork()
- {
- operation.Post(new SendOrPostCallback(delegate(object state)
- {
- EventHandler handler = SomethingHappened;
- if(handler != null)
- {
- handler(this, EventArgs.Empty);
- }
- }), null);
- operation.OperationCompleted();
- }
- bw = new BackgroundWorkerExtended();
- bw.DoWork += (DoWorkEventHandler)work;
- bw.WorkerSupportsCancellation = true;
- //bw.WorkerReportsProgress = true;
- bw.RunWorkerCompleted += (RunWorkerCompletedEventHandler)workCompleted;
- //bw.ProgressChanged+=new ProgressChangedEventHandler(bw_ProgressChanged);
- bw.RunWorkerAsync();
Add Comment
Please, Sign In to add comment