Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Tue Jan 26 00:20:46 CST 2010
John -- As I noted my sample code was one of myriads possible variants - below it yet another one - just a sample. As for setting form controls' properties you have to use .InvokeRequired and .Invoke to check calling context and to properly set controls' properties - you can google/bing for such samples of wait here for some to appear in this or related threads. Thank you. -- Shamil P.S. using System; // classlib1 namespace My.CoreClassLib { public class SpRunnerStatusReportEventArgs : EventArgs { public int CurrentCount { get; set; } public int MaxCount { get; set; } } } // classlib2 namespace My.UtilsClassLib { public class SpStatusReporter { public SpStatusReporter( EventHandler<My.CoreClassLib.SpRunnerStatusReportEventArgs> statusReport) { _statusReport = statusReport; } private EventHandler<My.CoreClassLib.SpRunnerStatusReportEventArgs> _statusReport; public void ReportStatus(int currentCount, int maxCount) { if (_statusReport != null) { My.CoreClassLib.SpRunnerStatusReportEventArgs e = new My.CoreClassLib.SpRunnerStatusReportEventArgs(); e.CurrentCount = currentCount ; e.MaxCount = maxCount; _statusReport(this, e); } } } } // classlib3 namespace My.BusinessLayerClassLib { public class SpRunnerManager { public EventHandler<My.CoreClassLib.SpRunnerStatusReportEventArgs> StatusReport; private My.UtilsClassLib.SpStatusReporter _reporter; public void Run() { if (_reporter == null) _reporter = new My.UtilsClassLib.SpStatusReporter(StatusReport); const int MAX_COUNT = 5; for (int i = 1; i <= MAX_COUNT; i++) { _reporter.ReportStatus(i, MAX_COUNT); } } } } // front-end namespace ConsoleApplication { class Program { static void Main(string[] args) { My.BusinessLayerClassLib.SpRunnerManager runner = new My.BusinessLayerClassLib.SpRunnerManager(); runner.StatusReport += new EventHandler<My.CoreClassLib.SpRunnerStatusReportEventArgs>(statusReport); runner.Run(); } private static void statusReport(object sender, My.CoreClassLib.SpRunnerStatusReportEventArgs e) { System.Console.WriteLine("{0}: Processing {1} of {2}...", sender.GetType(), e.CurrentCount, e.MaxCount); } } } __________ Information from ESET NOD32 Antivirus, version of virus signature database 4805 (20100125) __________ The message was checked by ESET NOD32 Antivirus. http://www.esetnod32.ru