Я создал код psedo того, чего я хотел бы достичь. Внутри потоков SomeBLL (). PerformBeginWork () будут созданы и поддерживаться для выполнения работы. Используя dot.net 4.0, что было бы лучшим способом поместить эту обработку в поток, не являющийся пользовательским интерфейсом, и при этом позволить назначенным делегатам запускать и обновлять пользовательский интерфейс в Windows и веб-приложении без изменений кода?
public class SomeBLL : BaseAsynWorker, IAsyncWorker
{
...makes threads and does work (if events are assigned then call them)
}
На веб-странице
SomeBLL sm=new SomeBLL();
sm.OnBeginWork+=ProcessUIUpdate;
sm.OnProgressUpdate+=ProcessUIUpdate;
sm.OnEndWork+=ProcessUIUpdate;
sm.OnHardError+=ProcessHardError;
SomeThreadClass.Spawn(sm.PerformBeginWork())
В процессе без пользовательского интерфейса
SomeBLL sm=new SomeBLL();
sm.PerformBeginWork();