Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Tue Jan 26 10:00:33 CST 2010
Hi John --
Here is a promised WinForms sample code with .InvokeRequired and .Invoke
(Part 2) - you can put code from Part 1 and Part 1 into one code file
replacing Program.cs in Console app, set references to System.Windows.Forms
and System.Drawing and run it:
// 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);
}
}
}
}
__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4807 (20100126) __________
The message was checked by ESET NOD32 Antivirus.
http://www.esetnod32.ru