aleukhin c987039907 1st com | 8 сар өмнө | |
---|---|---|
ConsoleApp2 | 8 сар өмнө | |
.gitignore.txt | 8 сар өмнө | |
readme.md | 8 сар өмнө |
Task task1 = new Task(
() => Console.WriteLine("Task1 is executed"));
task1.Start();
Task task2 = Task.Factory.StartNew(
() => Console.WriteLine("Task2 is executed"));
Task task3 = Task.Run(
() => Console.WriteLine("Task3 is executed"));
Console.ReadLine();
Z:/oap/labs/lab5_multithreading/ConsoleApp2/ConsoleApp2/bin/Debug/net8.0/ConsoleApp2.exe Task1 is executed Task3 is executed Task2 is executed
Task task = Task.Run(
() => Console.WriteLine("Hello Task!")
);
Z:/oap/labs/lab5_multithreading/ConsoleApp2/ConsoleApp2/bin/Debug/net8.0/ConsoleApp2.exe
Process finished with exit code 0.
using System;
using System.Threading.Tasks;
Task task1 = new Task(
() => Console.WriteLine("Task1 is executed"));
task1.Start();
Task task2 = Task.Factory.StartNew(
() => Console.WriteLine("Task2 is executed"));
Task task3 = Task.Run(
() => Console.WriteLine("Task3 is executed"));
Console.ReadLine();
вывод:
Z:/oap/labs/lab5_multithreading/ConsoleApp2/ConsoleApp2/bin/Debug/net8.0/ConsoleApp2.exe
Task1 is executed
Task3 is executed
Task2 is executed
using System;
using System.Threading;
Task task = new Task(Display);
task.Start();
Console.WriteLine(
"Завершение метода Main");
Console.ReadLine();
static void Display()
{
Console.WriteLine(
"Начало работы метода Display");
Console.WriteLine(
"Завершение работы метода Display");
}
вывод:
Z:/oap/labs/lab5_multithreading/ConsoleApp2/ConsoleApp2/bin/Debug/net8.0/ConsoleApp2.exe
Начало работы метода Display
Завершение работы метода Display
Завершение метода Main
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
await FactorialAsync();
Console.WriteLine("Введите число: ");
int n = Int32.Parse(Console.ReadLine());
Console.WriteLine($"Квадрат числа равен {n * n}");
Console.Read();
}
static void Factorial()
{
int result = 1;
for (int i = 1; i <= 6; i++)
{
result *= i;
}
Thread.Sleep(8000);
Console.WriteLine($"Факториал равен {result}");
}
static async Task FactorialAsync()
{
Console.WriteLine("Начало метода FactorialAsync");
await Task.Run(() => Factorial());
Console.WriteLine("Конец метода FactorialAsync");
}
}
вывод:
Z:/oap/labs/lab5_multithreading/ConsoleApp2/ConsoleApp2/bin/Debug/net8.0/ConsoleApp2.exe
Начало метода FactorialAsync
Факториал равен 720
Конец метода FactorialAsync
Введите число:
44
Квадрат числа равен 1936
using System;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
ReadWriteAsync();
Console.WriteLine("какая-то работа");
Console.Read();
static async void ReadWriteAsync()
{
string s = "Hello world! One step at a time";
using (StreamWriter writer = new StreamWriter("hello.txt", false))
{
await writer.WriteLineAsync(s);
}
using (StreamReader reader = new StreamReader("hello.txt"))
{
string result = await reader.ReadToEndAsync();
Console.WriteLine(result);
}
}
вывод:
какая-то работа
Hello world! One step at a time
2
StreamWriter writer = new StreamWriter("hello.txt", false);
await writer.WriteLineAsync("Hello");
вывод:
Process finished with exit code 0.
static void Factorial()
{
int result = 1;
for (int i = 1; i <= 6; i++)
{
result *= i;
}
Thread.Sleep(8000);
Console.WriteLine($"Факториал равен {result}");
}
static async void FactorialAsync()
{
await Task.Run(()=>Factorial());
}
ывод:
Process finished with exit code 0.
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("Введите число: ");
int input = Int32.Parse(Console.ReadLine());
await FactorialAsync(input);
Console.Read();
}
static async Task FactorialAsync(int n)
{
Console.WriteLine("Начало метода FactorialAsync");
await Task.Run(() =>
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Thread.Sleep(8000);
Console.WriteLine($"Факториал числа {n} равен {result}");
});
Console.WriteLine("Конец метода FactorialAsync");
}
}
Вывод:
Введите число для вычисления факториала:
6
Начало метода FactorialAsync
Факториал числа 6 равен 720
Конец метода FactorialAsync
using System;
using System.Threading;
using System.Threading.Tasks;
FactorialAsync(9);
FactorialAsync(5);
Console.WriteLine("некоторая работа");
Console.Read();
static void Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Thread.Sleep(2000);
Console.WriteLine($"Факториал равен {result}");
}
static async void FactorialAsync(int n)
{
await Task.Run(()=>Factorial(n));
}
некоторая работа
Факториал равен 362880
Факториал равен 120
using System;
using System.Threading;
using System.Threading.Tasks;
FactorialAsync(5);
FactorialAsync(4);
Console.Read();
static int Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
static async void FactorialAsync(int n)
{
int x = await Task.Run(()=>Factorial(n));
Console.WriteLine($"Факториал равен {x}");
}
Факториал равен 24
Факториал равен 120
static void Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Console.WriteLine($"Факториал равен {result}");
}
static async void FactorialAsync(int n)
{
await Task.Run(()=>Factorial(n));
}
Process finished with exit code 0.
using System;
using System.Threading.Tasks;
FactorialAsync(6);
FactorialAsync(9);
Console.WriteLine("Некоторая работа");
Console.Read();
static void Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Console.WriteLine($"Факториал равен {result}");
}
static async Task FactorialAsync(int n)
{
await Task.Run(()=>Factorial(n));
}
Факториал равен 362880
Некоторая работа
Факториал равен 720
using System;
using System.Threading.Tasks;
int n1 = await FactorialAsync(7);
int n2 = await FactorialAsync(9);
Console.WriteLine($"n1={n1} n2={n2}");
Console.Read();
static int Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
static async Task<int> FactorialAsync(int n)
{
return await Task.Run(()=>Factorial(n));
}
n1=5040 n2=362880
using System;
using System.Threading.Tasks;
FactorialAsync();
Console.Read();
static void Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Console.WriteLine($"Факториал числа {n} равен {result}");
}
static async void FactorialAsync()
{
await Task.Run(() => Factorial(6));
await Task.Run(() => Factorial(2));
await Task.Run(() => Factorial(7));
}
Факториал числа 6 равен 720
Факториал числа 2 равен 2
Факториал числа 7 равен 5040
using System;
using System.Threading;
using System.Threading.Tasks;
FactorialAsync(-1);
FactorialAsync(6);
Console.Read();
static void Factorial(int n)
{
if (n < 1)
throw new Exception($"{n} : число не должно быть меньше 1");
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
Console.WriteLine($"Факториал числа {n} равен {result}");
}
static async void FactorialAsync(int n)
{
try
{
await Task.Run(() => Factorial(n));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Факториал числа 6 равен 720
-1 : число не должно быть меньше 1
using System;
using System.Threading;
using System.Threading.Tasks;
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
FactorialAsync(7, token);
Thread.Sleep(2000);
cts.Cancel();
Console.Read();
static void Factorial(int n, CancellationToken token)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine(
"Операция прервана токеном");
return;
}
result *= i;
Console.WriteLine(
$"Факториал числа {i} равен {result}");
Thread.Sleep(1350);
}
}
static async void FactorialAsync(int n, CancellationToken token)
{
if(token.IsCancellationRequested)
return;
await Task.Run(()=>Factorial(n, token));
}
Факториал числа 1 равен 1
Факториал числа 2 равен 2
Операция прервана токеном