"SimpleMultitaskingApplication":
(рис 8.1)
private static void printMessage() {
Console.WriteLine("Hello world!");
}
Task task1 = new Task(new Action(printMessage));
Task task2 = new Task(delegate { Console.WriteLine("Hello world!"); });
Task task3 = new Task(() => printMessage());
Task task4 = new Task(() => { Console.WriteLine("Hello world!"); });
task1 - используем делегат Action и именной метод (в нашем случае printMessage);
task2 - используем анонимный делегат;
task3 - используем лямбда выражение и именной метод;
task4 - используем лямбда выражение и анонимный метод. Start():
task1.Start()
task2.Start()
task3.Start()
task4.Start()
Main()) с помощью фрагмента кода:
Console.WriteLine("Главный метод завершен.")
Console.ReadLine()
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleMultitaskingApplication
{
class Program
{
private static void printMessage()
{
Console.WriteLine("Hello world!");
}
static void Main(string[] args)
{
Task task1 = new Task(new Action(printMessage));
Task task2 = new Task(delegate { Console.WriteLine("Hello world!"); });
Task task3 = new Task(() => printMessage());
Task task4 = new Task(() => { Console.WriteLine("Hello world!"); });
task1.Start();
task2.Start();
task3.Start();
task4.Start();
Console.WriteLine("Главный метод завершен.");
Console.ReadLine();
}
}
}
(рис 8.2)
printMessage():
private static string printMessage(string message)
{
return message.ToUpper();
}
Данный перегруженный метод теперь возвращает значение типа string, преобразованное в верхний регистр.
printMessage значение и возвращала результат выполнения задачи в виде строки:
Task <string> message = new Task<string>(mes => printMessage((string) mes), "hello world")
message.Start()
Console.WriteLine("Сообщение: " + message.Result)
(рис 8.3)
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleMultitaskingApplication
{
class Program
{
static void Main(string[] args)
{
Task<string> message = new Task<string>(mes => printMessage((string)mes), "hello world");
message.Start();
Console.WriteLine("Сообщение: " + message.Result);
Console.WriteLine("Главный метод завершен.");
Console.ReadLine();
}
private static string printMessage(string message)
{
return message.ToUpper();
}
}
}
ContinueWith. Данный метод вызывает продолжение выполнения целевой задачи, но уже в другой задаче, в нашем случае задачи message:
Task cwt =message.ContinueWith(task => Console.WriteLine("Сообщение: " + message.Result));
(рис 8.4)
Примечание. Как видно из результата выполнения программы, главный метод завершит выполнение раньше, чем дочерни задачи, это связанно с тем, что задача вывода на экран результата (Task cwt) выполнения метода printMessage., выполнится только тогда, когда завершится выполнение задачи Task <string> message.
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleMultitaskingApplication
{
class Program
{
private static string printMessage(string message)
{
return message.ToUpper();
}
static void Main(string[] args)
{
Task<string> message = new Task<string>(mes => printMessage((string)mes), "hello world");
message.Start();
Task cwt = message.ContinueWith(task => Console.WriteLine("Сообщение: " + message.Result));
Console.WriteLine("Главный метод завершен.");
Console.ReadLine();
}
}
}
Task<string[]> message = new Task<string[]>(() =>
{
var result = new string[3];
new Task(() => result[0] = printMessage("Hello"), TaskCreationOptions.AttachedToParent).Start();
new Task(() => result[1] = printMessage("World"), TaskCreationOptions.AttachedToParent).Start();
new Task(() => result[2] = printMessage("Hello world!"), TaskCreationOptions.AttachedToParent).Start();
return result;
});
Данный фрагмент кода возвращает строковый массив, который формируется с помощью дочерних задач.
var cwt =message.ContinueWith(mes => Array.ForEach(mes.Result,Console.WriteLine))
message.Start()
(рис 8.5)
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleMultitaskingApplication
{
class Program
{
static void Main(string[] args)
{
Task<string[]> message = new Task<string[]>(() =>
{
var result = new string[3];
new Task(() => result[0] = printMessage("Hello"), TaskCreationOptions.AttachedToParent).Start();
new Task(() => result[1] = printMessage("World"), TaskCreationOptions.AttachedToParent).Start();
new Task(() => result[2] = printMessage("Hello world!"), TaskCreationOptions.AttachedToParent).Start();
return result;
});
var cwt =message.ContinueWith(mes => Array.ForEach(mes.Result,Console.WriteLine));
message.Start();
Console.WriteLine("Главный метод завершен.");
Console.ReadLine();
}
private static string printMessage(string message)
{
return message.ToUpper();
}
}
}Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.