А для анализа результата выполнения вторичного потока можно использовать метод класса, отвечающего за запуск вторичного потока. Соответствующим образом настроенный делегат также может быть передан в качестве параметра конструктору, отвечающему за организацию вторичного потока. Вызывать метод класса, запустившего вторичный поток, можно будет по окончании работы во ВТОРИЧНОМ потоке.
Важно! ЭТА ФУНКЦИЯ сама будет выполняться во ВТОРИЧНОМ потоке! Однако если главный поток ещё не завершён, а остаётся в ожидании результатов (например, в результате выполнения метода Join), это обстоятельство не является проблемой. Будучи сама членом класса, эта функция-член имеет доступ ко всем данным и методам своего класса. И неважно, в каком в каком потоке она выполняется.
using System;
using System.Threading;
// Класс WorkThread включает необходимую информацию,
// метод и делегат для вызова метода, который запускается
// после выполнения задачи.
public class WorkThread
{
// Входная информация.
private string entryInformation;
private int value;
// Ссылка на объект-представитель класса-делегата, с помощью которого
// вызывается метод обратного вызова. Сам класс-делегат объявляется позже.
private CallbackMethod callback;
// Конструктор получает кходную информацию и настраивает
Callback метод – метод-член класса, запустившего вторичный поток. Этот метод запускается “в качестве уведомления” о том, что вторичный поток “завершил выполнение своей миссии”. Главная проблема Callback метода заключается в том, что он выполняется в “чужом” потоке.