Suggested Videos
Part 88 - ThreadStart delegate
Part 89 - ParameterizedThreadStart delegate
Part 90 - Passing data to the Thread function in a type safe manner
In this video we will discuss, retrieving data from Thread function using callback method. This is continuation to Part 90. Please watch Part 90 before proceeding. We will be working with the same example we worked with in Part 90.
Part 88 - ThreadStart delegate
Part 89 - ParameterizedThreadStart delegate
Part 90 - Passing data to the Thread function in a type safe manner
In this video we will discuss, retrieving data from Thread function using callback method. This is continuation to Part 90. Please watch Part 90 before proceeding. We will be working with the same example we worked with in Part 90.
using System;
using System.Threading;
namespace ThreadStartDelegateExample
{
// Step 1: Create a callback delegate. The
actual callback method
// signature should match with the signature
of this delegate.
public delegate void SumOfNumbersCallback(int sumOfNumbers);
// Step 2: Create Number class to compute the
sum of numbers and
// to call the callback method
class Number
{
// The traget number this class needs to
compute the sum of numbers
int _target;
// Delegate to call when the the Thread
function completes
// computing the sum of numbers
// computing the sum of numbers
SumOfNumbersCallback _callbackMethod;
// Constructor to initialize the target
number and the callback delegateinitialize
public Number(int target, SumOfNumbersCallback callbackMethod)
{
this._target = target;
this._callbackMethod = callbackMethod;
}
// This thread function computes the sum of
numbers and then invokes
// the callback method passing it the sum of
numbers
public void ComputeSumOfNumbers()
{
int sum = 0;
for (int i = 1; i <= _target; i++)
{
sum = sum +
i;
}
if (_callbackMethod != null)
{
_callbackMethod(sum);
}
}
}
// Step 3: This class consumes the Number
class created in Step 2
class Program
{
// Callback method that will receive the sum
of numbers
public static void PrintSumOfNumbers(int sum)
{
Console.WriteLine("Sum of numbers is " + sum);
}
public static void Main()
{
// Prompt the user for the target
number
Console.WriteLine("Please enter the target number");
// Read from the console and store it
in target variable
int target = Convert.ToInt32(Console.ReadLine());
// Create an instance of callback
delegate and to it's constructor
// pass the name of the callback
function (PrintSumOfNumbers)
SumOfNumbersCallback callbackMethod = new SumOfNumbersCallback(PrintSumOfNumbers);
// Create an instance of Number class
and to it's constrcutor pass the target
// number and the instance of callback
delegate
Number number = new Number(target,
callbackMethod);
// Create an instance of Thread class
and specify the Thread function to invoke
Thread T1 = new Thread(new ThreadStart(number.ComputeSumOfNumbers));
T1.Start();
}
}
}
No comments:
Post a Comment
It would be great if you can help share these free resources