Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Can a backgroundworker be told to wait?
Message
General information
Forum:
ASP.NET
Category:
Windows Presentation Foundation (WPF)
Environment versions
Environment:
C# 4.0
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01614173
Message ID:
01614328
Views:
29
>O wow! Sounds promising. I'll try it out and let you know.
>
>Do you still use the bgw, or did you move on to threads, awaits and what have you?

Depends on the circumstances...
I use async tasks for web stuff quite often; bgw now and again; plinq occasionally (but usually for fun :-} )

>
>>>To the best of my knowledge it does yes. I use Excel via interop. I think I will refactor my logic so that this situation won't hurt, or put a "wait".
>>
>>A simple wait might be dangerous if you under-estimate the timing. Maybe a semaphore would work (not tested):
   public class Test
>> {
>>
>> public static ManualResetEvent re = new ManualResetEvent(false);
>>
>> public void Doit()
>> {
>> var bg36 = new BackgroundWorker();
>> bg36.DoWork += bg36_DoWork;
>> bg36.WorkerReportsProgress = true;
>> bg36.ProgressChanged += bg36_ProgressChanged;
>> bg36.RunWorkerAsync();
>>
>> }
>>
>> private void bg36_ProgressChanged(object sender, ProgressChangedEventArgs e)
>> {
>> if ((string)e.UserState== "save ledgers")
>> {
>> SaveLedgers();
>> Test.re.Set();
>> }
>> }
>>
>> public void SaveLedgers()
>> {
>> }
>>
>> private void bg36_DoWork(Object sender, DoWorkEventArgs e)
>> {
>> BackgroundWorker bw = (BackgroundWorker)sender;
>> bw.ReportProgress(0,"save ledgers");
>> Test.re.WaitOne();
>> //Continue
>> }
>>
>> }
Previous
Reply
Map
View

Click here to load this message in the networking platform